簡體   English   中英

如何將jnlp與OSX停靠圖標捆綁在一起; 這在java首選項中似乎不再可能

[英]How can I bundle a jnlp with an OSX dock icon; this no longer appears to be possible in the java preferences

該選項打包JNLP作為一個應用程序不會出現在甲骨文的JDK 7 Java首頁存在,因為它在蘋果所做的陳述在這里

OS X桌面與Java Web Start的集成允許用戶從任何Java Web Start應用程序創建本地應用程序包。 Java Preferences中的Shortcut Creation設置控制在打開Java Web Start應用程序時是否提示用戶創建應用程序包。 捆綁的Java Web Start應用程序具有本機應用程序包的所有優點,在“OS X應用程序包”中對此進行了描述。

為了解決這個問題,我使用Automator創建一個.app,它運行一個執行JNLP的shell腳本。 這允許我使用應用程序圖標,但我所有配置停靠圖標的嘗試都失敗了。

我嘗試使用iconutil創建一個.icns文件並將其添加到Resources文件夾,然后在"Icon File"字段下的Contents/Info.plist指定.icns文件,但我仍然在Dock中獲取java咖啡杯圖標在運行應用程序時。

我嘗試過的另一件事是將-Xdock:icon=icon.jpg參數傳遞給javaws但這似乎只適用於常規java程序。

我找到了解決問題的方法。 您可以直接在jnlp中引用它,而不是在.app文件中捆綁圖標。 JNLP開發人員指南包含icon element的說明

icon element:包含GIF或JPEG格式的圖像文件的HTTP URL。 圖標用於表示應用程序

在Java Web Start向用戶呈現應用程序時啟動時; 在應用程序管理器中; 在桌面快捷方式。 下載過程中會顯示64x64圖標; 在應用程序管理器和桌面快捷方式中,使用32x32圖標。 Java Web Start會自動將圖標調整為適當的大小。

它沒有明確提到那里的OSX底座,但是快速測試顯示它確實在那里放置了圖標。

我建議采用不同的方法,這將有助於您使用其他部署方法(不僅僅是jnlp)。

您可以在代碼中使用反射來添加OSX特定代碼。 我在Windows上編譯了我的應用程序並為mac添加了dock圖標。

javax.swing.ImageIcon icon = ...
Class c = Class.forName("com.apple.eawt.Application");
Method m = c.getMethod("getApplication");
Object applicationInstance = m.invoke(null);
m = applicationInstance.getClass().getMethod("setDockIconImage",  javax.swing.ImageIcon.class);
m.invoke(applicationInstance,icon);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM