【问题标题】:How can I bundle a jnlp with an OSX dock icon; this no longer appears to be possible in the java preferences如何将 jnlp 与 OSX 停靠图标捆绑在一起;这在 java 首选项中似乎不再可能
【发布时间】:2012-10-22 14:17:09
【问题描述】:

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

OS X 桌面与 Java Web Start 的集成让用户可以创建本地 来自任何 Java Web Start 应用程序的应用程序包。捷径 Java 首选项中的创建设置控制用户是否 打开 Java Web Start 时提示创建应用程序包 应用。捆绑的 Java Web Start 应用程序具有所有 本机应用程序包的好处,在“OS X 应用程序包。”

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

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

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

【问题讨论】:

    标签: java macos jnlp


    【解决方案1】:

    我找到了解决问题的方法。您可以直接在 jnlp 中引用它,而不是将图标捆绑在 .app 文件中。 The JNLP Developer's guide 包含对 icon element 的描述

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

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

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

    【讨论】:

      【解决方案2】:

      我会推荐一种不同的方法,它也可以帮助您使用其他部署方法(不仅仅是 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);
      

      【讨论】:

        猜你喜欢
        • 2011-06-06
        • 1970-01-01
        • 1970-01-01
        • 2014-02-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多