Java web başlatıcı uygulaması yaptım ve başlatmak için bağlantıya sahip bir HTML sayfası oluşturdum. Sorun şu ki, Google Chrome’da, dosyayı kaydetmeden sadece 'Aç' seçeneği yoktur. Bunu kaydetmek zorunda kalmadan bir JNLP dosyasını otomatik olarak başlatabilen bir HTML sayfası oluşturmak istiyorum. Ya da, kullanıcının dosyayı açmak için dosya gezgini açmak zorunda kalmadan) Bu mümkün mü?Webstart'ı indirmeden indir ...?
cevap
JNLP'yi, web başlatıcısını kullanarak yerleştirilen yerleşik bir uygulama kullanarak başlatın.
- bir görüntü yolunu (simge) ve düğme için bir dize kabul JApplet dayalı bir Swing ile Başlat. JWS'yi kullanarak uygulamayı (bağlantının olduğu web sayfasına gömülü olarak) dağıtın.
- Kullanıcı bu düğmeyi tıklattığında, JWS (çerçeve tabanlı) uygulamasını başlatmak için
BasicService.showDocument(URL)
yöntemini kullanın. Ben .. demo. of the BasicService içinde..in Java 6+ belirttiği gibi, bir çağrı (örneğin
BasiceService.showDocument(another.jnlp))
görünen hiçbir tarayıcı penceresi ile javaws doğrudan teslim , edilecek başka bir web başlatmak başlatmak dosyasını göstermek için.
Tamam, ama krom, JavaWS teslim değil. Bir tarayıcı penceresi açar ..... – DankMemes
Ayrıca, Chrome uygulamalarını desteklemeyi durdurdu. –
Ne yazık ki bu, ancak kısmen sabitlendiği still exists bir hata (?/özellik) Google Chrome içinde: indirme klasörüne yapabilirsiniz artık otomatik açık jnlp dosyaları, ancak yine de kaydedilir
- indirme indir çubuğunda
- sağ tıklayın ve doğrudan şimdi JNLP tıklayarak bu tip
- her zaman açık dosyalara seçmek jnlp bu sorunu bıkmış hale getirilmesinden sonra bunu
'dan beri jnlps için "her zaman açık" seçeneğini engelliyorlar. Çok sinir bozucu. Bir geçici çözüm için aşağıdaki yanıttaki hayal kırıklığımın sonucunu görün. –
başlattı, ben yazdım kendi işimin uzantısı.
Ubuntu'nun altında yazılmıştır, ancak taşınabilir olmalıdır (hatta bir çalışma/okuma ile32 kazanmak için).
Tek bir tıklama, bir jnlp dosyasını sormadan veya indirmeden başlatır. jnlp dosyasının URL'sini doğrudan javaws'a geçirir. Karışık İndirme klasörü yok, fazladan tıklama yok.
Bu basit, ham ve etkilidir. URL'yi filtreledim, böylece sadece kendi iç sunucum için geçerli olacaktı, bu yüzden rasgele bir jnlp dosyası açmayacağım. Bunu geliştirmek için daha çok şey yapılabilir, eminim. vs vs AS-İŞ, hiçbir garanti, kullanın
dosyaları:
/usr/local/bin/jnlp-başlatıcısı
#!/usr/bin/env python
import struct
import sys
import threading
import Queue
import json
import os
# On Windows, the default I/O mode is O_TEXT. Set this to O_BINARY
# to avoid unwanted modifications of the input/output streams.
if sys.platform == "win32":
import os, msvcrt
msvcrt.setmode(sys.stdin.fileno(), os.O_BINARY)
msvcrt.setmode(sys.stdout.fileno(), os.O_BINARY)
# Helper function that sends a message to the webapp.
def send_message(message):
# Write message size.
sys.stdout.write(struct.pack('I', len(message)))
# Write the message itself.
sys.stdout.write(message)
sys.stdout.flush()
# Thread that reads messages from the webapp.
def read_thread_func(queue):
message_number = 0
while 1:
# Read the message length (first 4 bytes).
text_length_bytes = sys.stdin.read(4)
if len(text_length_bytes) == 0:
if queue:
queue.put(None)
sys.exit(0)
# Unpack message length as 4 byte integer.
text_length = struct.unpack('i', text_length_bytes)[0]
# Read the text (JSON object) of the message.
text = sys.stdin.read(text_length).decode('utf-8')
decoded = json.loads(text);
os.system("javaws " + decoded['url']);
def Main():
read_thread_func(None)
send_message('"complete"')
sys.exit(0)
if __name__ == '__main__':
Main()
krom uzantısı 2 dosya yerel yerleştirilir dizin:
manifest.json
{
"manifest_version": 2,
"background": {
"persistent": false,
"scripts": [ "bg.js" ]
},
"name": "JNLP Fixer",
"description": "Handle JNLPs",
"version": "1.0",
"permissions": [
"downloads", "nativeMessaging"
]
}
Ve bg.js (ana bilgisayar filtreleri için gerektiği gibi düzenleyin)
chrome.downloads.onCreated.addListener(function(downloadId) {
var expr = /\.jnlp$/;
//this is to limit where we apply the auto-launch.
//for our use, i only wanted it for internal jnlps.
var hostExpr = /(http|https):\/\/internal.company.com\//;
if (hostExpr.test(downloadId.url)) {
if (downloadId.state == "in_progress") {
console.log(downloadId.url);
chrome.downloads.cancel(downloadId.id,function() {
console.log("cancelled");
});
chrome.runtime.sendNativeMessage("com.hcs.jnlplauncher",
{url:downloadId.url},
function(response)
{
console.log(chrome.runtime.lastError);
console.log(response);
}
);
}
}
})
Bildiri belirtiniz.json ve bg.js bir klasörde ve chrome: geliştirici modunda chrome'da Unpacked uzantısı olarak yükleyin: // extensions
chrome: // extensions sayfalarından uzantının kimliğini alın.
Sonraki uzantı ve kabuk komut dosyası arasındaki köprüdür.
Dosya: com.hcs.jnlplauncher.json
{
"name": "com.hcs.jnlplauncher",
"description": "JNLP Launcher",
"path": "/usr/local/bin/jnlp-launcher",
"type": "stdio",
"allowed_origins": [
"chrome-extension://iacomlhfiphkdfjjjmlgckdkhmkhkibe/"
]
}
Place Bu altında (linux için) "~/.config/google-chrome/NativeMessagingHosts". windows konumları için google bakın.
Uzantı kimliğinizi önceki adımdan bu dosyaya koyun.
Javaws'ın yolunda olduğundan emin olun. (krom ile çalışır)./usr/bin için bağlantı emin olmak için en kolay yoldur.
Bir jnlp dosyasına tıklayın ve keyfini çıkarın! Hiçbir bilgi istemez, ClickToOpen yok ve İndirilenler dizininde hiç dosya kaydedilmedi.
Birisi bunları birlikte paketlenmiş bir yükleyiciye paketlemek isterse ve/veya krom uzantısına sahip olmak istemiyorsanız. Lütfen bana not ver (Chris Holt - [email protected]) ve bana haber ver. İlk bakışta, NativeMessagingHosts parçasının uzantıya nasıl ekleneceğini göremedim. Belki 2 parça olmalı? Bu, Chrome Uzantıları ve NativeMessaging'deki ilk serüvenim. Kodun çoğu API belgelerinden ve örneklerinden gelir ve muhtemelen birkaç hata vardır.
Merhaba @Chris Holt, bu harika. Ama chrome'um hala dosyayı indiriyor; Ancak şimdi indirilen dosyayı durum çubuğunda tıklayabiliyorum ve daha sonra javaws, büyük iyileştirme başlatacak - çok teşekkür ederim. – tink
Bu örnek (Swing JavaFX 2 katıştırma) ve makaleleri büyük bir örnek vardır ve onlar da modern tarayıcılarda
örnek http://www.oracle.com/technetwork/java/javase/overview/javafx-samples-2158687.html
belgeleri ile çalışmak: https://docs.oracle.com/javase/8/docs/technotes/guides/deploy/deployment_toolkit.html#BABIJEHC
Artık çalışmıyor. – Szundi
- 1. Dosyaları indirmeden Paperclip ile kaydetme
- 2. İndir Günlüğü
- 3. Firefox belgeyi indirmeden önce neden engelleniyor?
- 4. Dosyayı indirmeden önce URL'den dosya adını ayrın.
- 5. Wikipedia metin indir
- 6. html indir etiketi
- 7. Sbt indir ubuntu
- 8. android indir dosyaları sorun
- 9. istatistik paketlerini indir
- 10. CookComputing.XmlRpcV2.dll Doğrudan indir?
- 11. GIT - İndir Son tar.bz2
- 12. AngularJs uygulamasında bozuk İndir
- 13. JavaToWs türlerini indir
- 14. Python indir görüntü
- 15. indir RDS anlık görüntüsü
- 16. ASP.Net Dosyayı tarayıcıya indir
- 17. Angular kullanarak PDF'yi indir
- 18. Python ile fiyatları indir
- 19. Javascript rename dosyası indir
- 20. devre dışı bırakılması indir
- 21. youtube-dl indir konumu
- 22. wget indir aspx sayfa
- 23. Youtube video indir URL
- 24. AngularJs dinamik indir tepki
- 25. Struts 2 İndir - Dosya adını dinamik olarak nasıl yapılandırabilirim?
- 26. Web sayfasındaki bağlantıdan dosyayı indir
- 27. sitecore analytics pdf indir tracking
- 28. Autoit Tüm kaynak sitesi indir
- 29. Duraklat/Devam http bağlantı indir
- 30. Dosya İndir jaquery tarafından java
İlgili: http: // stackoverflow. com/questions/9348449/can-ı-delete-indirilen-jnlp-dosya-java-web-start-jws-from-java-uygulama – finnw