【问题标题】:Create a bundle app from a jar that requires Java 1.8从需要 Java 1.8 的 jar 中创建捆绑应用程序
【发布时间】:2014-12-12 04:01:27
【问题描述】:

我正在为 Java 应用程序的交付而苦苦挣扎。我用 Eclupse Luna 编写了它,并设法导出了一个带有外部文件(图像)的 jar。所以现在我有一个来自 Eclipse 的 ant build xml 文件,我可以运行 ant -buildfile projectANT.xml 并且只有在复制了包含所有外部图像的数据文件后,我才能双击 jar 文件来执行它。

现在我想创建一个 Mac 包,以便可以将具有图标的 project.app 添加到 Dock 并可以在其中包含 java jdk(无需安装 java)。我使用的是 Java 1.8。

我尝试从现有应用程序中获取一个包并将我的 jar 放入其中(包含所有文件和 jdk 以及其他所有内容)但我得到了LSOpenURLsWithRole() failed with error -10810

然后我尝试使用 JarBundler 2.3.1 来处理 ant lib 文件夹中的 jar 捆绑器,但我没有设法创建正确的 ant 文件,它总是在以下罚款属性下丢失一些:

Problem: failed to create task or type jarbundler
Cause: The name is undefined.
Action: Check the spelling.
Action: Check that any custom tasks/types have been declared.
Action: Check that any <presetdef>/<macrodef> declarations have taken place.

然后我尝试从苹果开发工具版本 14.5.0 启动 Jar Bundler,但它无法加载我的 jar 文件(没有错误.. 选择它后 Main class 中出现任何内容,并且按钮 Create Application 只是停留灰色,我不能点击它。

我还尝试从一个脚本创建一个捆绑包,在该脚本中我在此 blog post 之后调用 java project.jar,但它似乎太旧并且不适用于我的 Mac OS/X (10.8.5)。

有什么建议吗?有没有一种简单的方法可以通过 Eclipse 导出的 jar 使用 Java 1.8 创建 Java 应用程序?

【问题讨论】:

标签: java macos ant jar bundle


【解决方案1】:

我认为您不能修改现有 Mac Bundle 的内容,直觉告诉我有安全功能可以防止这种情况发生,使用恶意代码修改现有捆绑软件太容易了。你需要重新开始你的 ant 任务并制作一个新的 Mac Bundle。 点击此链接“Build Mac OSX Java Application”,您会发现它包含一个很棒的 ant 任务示例,并写下如何使用 ant 任务来完成此任务。

这是他文章中的例子

 <target name="create-bundle" depends="clean">
    <bundleapp outputdirectory="${release.dir}"
        name="appName"
        displayname="displayName"
        identifier="com.your.app.Main"
        shortversion="0.1"
        icon="app.icns"
        copyright="Your Name"
        applicationCategory="public.app-category.utilities"
        mainclassname="com/your/app/Main"
    >
        <runtime dir="${env.JAVA_HOME}" />
        <!-- may want to also reference dependent jars using a classpath ref-->
        <classpath file="path/to/your/jar" />
        <option value="-Xdock:icon=Contents/Resources/youricon.icns"/>
        <option value="-Dapple.laf.useScreenMenuBar=true"/>
        <option value="-Dcom.apple.macos.use-file-dialog-packages=true"/>
        <option value="-Dcom.apple.macos.useScreenMenuBar=true"/>
        <option value="-Dapple.awt.application.name=appName"/>
        <option value="-Dcom.apple.smallTabs=true"/>

    </bundleapp>
</target>

确保将包设置为使用 java 1.8 运行时打开 https://apple.stackexchange.com/a/130692

【讨论】:

  • LSOpenURLsWithRole() failed with error -10810 for the file /Users/alberto/Code/woodskin/build/appName.app. 再次.. 10810 是什么意思?我在谷歌上找不到很多
  • 看起来你快到了。我认为您可能需要将包与 java 运行时相关联;但请确保您的 Mac 上安装了 java 1.8。
  • java -version &gt; java version "1.8.0_11" 是什么意思?好像和我以前一样的问题..
  • 如果您打开命令行并键入“java -version”,该命令会在该终端中打印出 java 的版本。你能在你看到这个问题的地方更详细地描述一下吗?
  • @kayakMike 嗨,我有类似的问题,请看看我的问题,谢谢stackoverflow.com/questions/28207295/…
猜你喜欢
  • 2015-03-28
  • 2017-07-12
  • 1970-01-01
  • 2023-03-23
  • 2011-03-18
  • 1970-01-01
  • 2017-04-12
  • 2012-06-29
  • 1970-01-01
相关资源
最近更新 更多