【问题标题】:Making a Stand-Alone Java EXE File制作独立的 Java EXE 文件
【发布时间】:2014-10-17 00:25:52
【问题描述】:

我目前是一名高中生,我发现了一个名为 FBLA 的俱乐部的游戏编程竞赛。我有一些关于比赛的问题,所以我给他们发了电子邮件。

我之前在 Computer Science Stack Exchange 上发过帖子,您可以在其中查看 here

现在收到问题的反馈后,有人评论说我应该在这个网站上发布我的下一个问题。


我的问题是,我如何能够将 Java JAR 文件与本机库打包,然后从中创建一个 EXE,所以它将是一个独立的?

在我的理论中,我必须创建 jar,并在人们在他们的机器上安装 java 时将所需的本机文件放入该 JAR 文件中,然后我可以使用 FatJar 或 JSmooth 等程序。

如果我错了,或者我如何能够更多地了解 jar 是如何运行的,那将有很大帮助。


2014 年 11 月 8 日更新
我终于回来搞砸了,我下载了 Launch4j。我用它设置并完成了所有工作,并制作了一个可执行文件,其中包含所有 java 的核心本机文件。我卸载了所有处理java的程序,当我去运行它时,它仍然需要java。

再次说明我需要做什么:
需要发生的是,即使法官的计算机上没有安装任何 Java 版本,可执行文件也能够运行。

【问题讨论】:

    标签: java camera libgdx


    【解决方案1】:

    我会推荐你​​使用 launch4j。 http://launch4j.sourceforge.net

    我已经将它用于一些较大的项目并且效果很好。

    它可以将您的 jar、依赖项甚至 JRE 封装到可执行文件的窗口中。它有一个 GUI,或者您可以从命令行运行。

    【讨论】:

    • 我已经有一段时间没有搞砸这个问题了,我最近才搞砸了。我下载了 Launch4j,然后运行了所有内容。我从我的计算机上卸载了所有的 java 来测试一个简单的应用程序(只是打开一个 JFrame),我在可执行文件中看到了我的 Java 目录中的所有文件,但它仍然需要一个 java 版本,我做错了什么吗?
    • 我记得在不嵌入 JVM 时它在做类似的事情时遇到了一些问题,它与最小/最大 Java 版本配置值有关。将 min 指定为我拥有的版本,将 max 指定为假设的 java 9 解决了它。不确定这是否与您看到的问题相同,但如果您没有指定最小和最大版本,我会尝试。
    【解决方案2】:

    Checkout Packr,由 libGDX 团队创建:https://github.com/libgdx/packr

    【讨论】:

      【解决方案3】:

      要使您的 jar 可执行,您需要在 jar 的清单文件中指定应用程序的主类、它可能需要的任何额外 jar 文件等等:

      Main-Class: MyAppMain
      Class-Path: MyLib.jar
      

      然后您使用 Java SDK 中的 jar 实用程序来打包您的类和资源文件,指定 m 选项和清单文件的名称:

      jar cvfm MyApp.jar MyApp.mf *.class *.gif
      

      这将导致创建MyApp.jar。现在,如果你输入

      java -jar MyApp.jar
      

      Java 启动器将从MyApp.jar 读取清单,将该文件 MyLib.jar 放在类路径上,并从MyAppMain 类调用main 方法。

      现在,如果您的 Java 应用需要本地库,您还需要指定 java.library.path 属性指向包含这些库的目录:

      java -Djava.library.path=.\bin -jar MyApp.jar
      

      有关更多信息和替代解决方案,请参阅my article

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-05-01
        • 1970-01-01
        • 2013-06-12
        • 1970-01-01
        • 1970-01-01
        • 2013-12-06
        • 2015-06-05
        相关资源
        最近更新 更多