2014-10-17 40 views
1

我目前是一所高中的学生,我发现了一个名为FBLA的俱乐部的游戏编程竞赛。我对比赛有几个问题,所以我给他们发了电子邮件。制作一个独立的Java EXE文件

我之前在Computer Science Stack Exchange上发表了一篇文章,在这里您可以查看here

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


我的问题是,我将如何能够与本地库打包Java JAR文件,然后创建一个EXE,因此它将是一个独立的?

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

如果我错了,或者我可以更多地了解罐子是如何运行的,这将有相当大的帮助。


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

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

回答

3

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

我已经将它用于一些较大的项目,它工作得很好。

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

+0

我已经搞砸了这个问题已经有一段时间了,最​​近我刚刚搞砸了。我下载了Launch4j,并且运行了一切。我从我的计算机中卸载了所有的java代码以测试一个简单的应用程序(只需打开一个JFrame),并从可执行文件的Java目录中看到所有文件,但它仍然需要Java版本,我做错了什么? – CoderMusgrove 2014-11-08 21:01:08

+0

我记得在没有嵌入JVM的时候遇到了一些类似的问题,并且它与最小/最大Java版本配置值有关。指定min作为我拥有的最大版本,假设的java 9解决了它。不知道这是否是你看到或不是相同的问题,但如果你没有指定最小和最大版本,我会尝试。 – user3357118 2014-11-09 01:19:16

0

为了使您的罐子可执行文件,你指定的主类应用程序的,任何额外的JAR文件可能需要等JAR的manifest文件:

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

然后使用jar工具从Java SDK来打包类和资源文件,指定-m选项,你的清单文件的名称:

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

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

java -jar MyApp.jar 

Java启动程序将读取清单从MyApp.jar,该文件在类路径MyLib.jar的地方,从类MyAppMain调用的主要方法。

现在,如果你的Java应用程序需要本机库,您还需要指定java.library.path属性指向目录(IES)持有这些:

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

欲了解更多信息和可选择的解决方案,是指my article