7

Oracle 的 JDK 7 Java Preferences 页面中似乎不存在将 JNLP 打包为应用程序的选项,因为它在苹果中如此处所述

OS X 桌面与 Java Web Start 的集成允许用户从任何 Java Web Start 应用程序创建本地应用程序包。Java 首选项中的快捷方式创建设置控制在打开 Java Web Start 应用程序时是否提示用户创建应用程序包。捆绑的 Java Web Start 应用程序具有本机应用程序包的所有优点,这些优点在“OS X 应用程序包”中进行了描述。</p>

为了解决这个问题,我使用 Automator 创建一个 .app,它运行一个执行 JNLP 的 shell 脚本。这允许我使用应用程序图标,但我所有配置停靠图标的尝试都失败了。

我尝试使用创建一个 .icns 文件iconutil并将其添加到文件夹中,然后在该字段下Resources指定 .icns 文件,但在运行应用程序时我仍然在 Dock 中看到 java 咖啡杯图标。Contents/Info.plist"Icon File"

我尝试过的另一件事是将-Xdock:icon=icon.jpg参数传递给,javaws但这似乎只适用于常规 Java 程序。

4

2 回答 2

2

我找到了解决我的问题的方法。您可以直接在 jnlp 中引用它,而不是将图标捆绑在 .app 文件中。JNLP 开发人员指南包含对icon element

图标元素:包含 GIF 或 JPEG 格式的图像文件的 HTTP URL。图标用于表示应用程序

在启动期间,Java Web Start 将应用程序呈现给用户;在应用程序管理器中;在桌面快捷方式中。下载过程中会显示一个 64x64 的图标;在应用程序管理器和桌面快捷方式中使用 32x32 图标。Java Web Start 会自动将图标调整为适当的大小。

它没有明确提到那里的 OSX 扩展坞,但快速测试显示它确实也将图标放在那里。

于 2012-10-22T19:38:17.393 回答
1

我会推荐一种不同的方法,它也可以帮助您使用其他部署方法(不仅是 jnlp)。

您可以在代码中使用反射来添加特定于 OSX 的代码。我已经在 Windows 上编译了我的应用程序并为 mac 添加了停靠图标。

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);
于 2013-10-04T03:12:51.597 回答