如何用Java创建项目的可执行文件? 我试图右键单击我的项目并选择导出。
问题是导出的jar文件在执行时不会打开!我错过了什么吗?有没有办法从我的项目中生成 .exe 可执行文件?
当我在cmd中执行jar文件时,它说:
Exception in thread "main" java.lang.UnsatisfiedLinkError: no lwjgl in java.libr
ary.path
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)
at org.lwjgl.Sys$1.run(Sys.java:73)
at java.security.AccessController.doPrivileged(Native Method)
at org.lwjgl.Sys.doLoadLibrary(Sys.java:66)
at org.lwjgl.Sys.loadLibrary(Sys.java:95)
at org.lwjgl.Sys.<clinit>(Sys.java:112)
at org.lwjgl.opengl.Display.<clinit>(Display.java:135)
at org.newdawn.slick.AppGameContainer$1.run(AppGameContainer.java:39)
at java.security.AccessController.doPrivileged(Native Method)
at org.newdawn.slick.AppGameContainer.<clinit>(AppGameContainer.java:36)
at JavaGame.Game.main(Game.java:34)
答案 0 :(得分:3)
UnsatisfiedLinkError表示您缺少本机库(通常是Windows上的.dll
文件或Linux上的.so
文件。您需要执行以下操作之一:
C:\Windows\system32
)java -Djava.library.path=dir/containing/library -jar <jarfile>
System.load
或System.loadLibrary
加载它。您可以使用上面的前两个解决方案中的任何一个作为快速入侵来使其正常工作,但这些解决方案都不是很好。从部署的角度来看,最佳解决方案是#3。
在您的情况下,您正在使用UnsatisfiedLinkError中引用的Lightweight Java Game Library或lwjgl。因此,您需要包含lwjgl附带的任何DLL。
当您解压缩lwjgl时,您会注意到它有一个本机目录,其中包含每个支持平台的子目录。这是lwjgl的Windows DLL列表:
要实现上面的解决方案#3并使您的可执行jarfile跨平台:
Class.getResourceAsStream
获取InputStream
,然后使用{{1}将其提取到文件中)Files.copy
请参阅https://stackoverflow.com/a/1611367/44737以获取一个很好的示例,包括代码。
答案 1 :(得分:2)
您可以使用jar command line tool手动将所有内容打包到jar中,也可以使用Ant,Maven或Gradle等工具自动打包jar。
将类文件正确打包在jar文件中后,可以通过创建适合您的操作系统的脚本文件来执行它们。例如,Windows中的批处理文件或Linux中的bash文件。
您所要做的就是调用java命令并提供类路径和应用程序入口点的名称。
#!/bin/bash
java -cp myApp.jar com.my.app.Main
就是这样。您可以通过调用该脚本来执行您的应用程序。
此外,您可以通过为jar文件定义MANIFEST文件来安排创建可执行jar。在该清单文件中,您可以放置一个指示应用程序入口点的属性Main-Class
,并且可以定义另一个名为Class-Path
的属性,该属性允许您指定应用程序所需的其他jar列表。
请参阅Running Jar-Packaged Software。
如果以这种方式打包jar,某些操作系统允许您只需双击jar即可执行应用程序。
但最有可能的是,你仍然需要创建一个脚本,这次有点不同:
#!/bin/bash
java -jar myApp.jar
请参阅Java Tutorial: Packaging Applications in Jar Files。
最终,如果您确实需要创建可执行文件,并且如果您正在使用Windows,则可以考虑使用WinRun4j之类的工具。