正确地将我的Eclipse项目导出为可执行的Jar文件

3
你好,我正在使用Eclipse开发项目,并尝试将其导出以便发送给一些朋友。但我对如何进行导出毫无头绪,所以我在YouTube上观看了一些视频,因为那是我能找到的全部相关内容。视频中提到:

  1. 文件 > 导出
  2. Java > Runnable Jar
  3. 下一步
  4. 设置项目启动配置、导出位置和库配置。(我正在使用lwjgl和slick 2d),所以我选择了“将所需库文件打包到生成的JAR包中”。

然后我试图通过双击来启动它,但没有反应。之后我尝试从命令提示符中输入“java -jar my_jar_name.jar”,但出现了以下错误:

Exception in thread "main" java.lang.reflect.InvocationTargetException
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.UnsatisfiedLinkError: no lwjgl in java.library.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:37)
        ... 5 more

以下是我项目中的主要方法:

注意:第一行为第34行,最后一行为43行。

public static void main(String[] args) {
    AppGameContainer appgc;
    try{
        appgc = new AppGameContainer(new Game(gamename));
        appgc.setDisplayMode(appgc.getScreenWidth(), appgc.getScreenHeight(), true);
        appgc.start();
    }catch(SlickException e){
        e.printStackTrace();
    }
}

如果需要更多信息,请告诉我!
附言:这是我第一次想在Eclipse中导出Java项目,所以我以前没有做过。

应用程序在Eclipse中运行正常吗?你肯定有某个JAR文件丢失了。 - OldProgrammer
是的,在Eclipse中它运行得非常完美,如果我缺少一个JAR包,那是我没有注意到的。 - willbattel
使用代码格式化代码、输入/输出和结构化文档,如HTML或XML。为此,请选择示例并单击消息发布/编辑表单上方的“{}”按钮。 - Andrew Thompson
部署Java桌面应用程序,通常最好的选择是使用[Java Web Start](http://stackoverflow.com/tags/java-web-start/info)安装应用程序。JWS适用于Windows,OS X和*nix。 - Andrew Thompson
3个回答

1

你可以像这样运行你的JAR:

java -jar my_jar_name.jar main_class_name

main_class_name是包含你的主方法的类名。

您还可以检查是否成功创建了带有所有依赖项的jar文件,以下是我添加库jar文件的方法:

选择项目,然后执行以下步骤:

Build Path -> Configure Build Path... -> Select Libraries tab -> Add External JARS

或者,您可以创建一个名为lib的文件夹,并将jar放入lib目录中,然后您可以执行以下步骤:

Build Path -> Configure Build Path... -> Select Libraries tab -> Add JARS

我已经掌握了所有这些知识。当时我是在thenewboston上跟着教程学习的。 - willbattel

1

同样的错误,我的项目(游戏)叫做《家园防御》,所以我在命令提示符中使用了这个名称,因为它与lwjgl构建路径属性中的名称相同:java -Djava.library.path="Homefront Defense/lib/natives/windows" -jar HomefrontDefense_Alpha0.1.jar。 - willbattel

1
我在参考另一个Stack Overflow问题后找到了解决方法。我使用JarSplicer创建了一个Fat Jar,将本地文件包含在我的jar中,这样就可以完美地运行我的应用程序。现在我可以通过双击它来运行我的应用程序,并且它的运行方式与在Eclipse中一样,感谢您的支持! 将Eclipse项目导出为jar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接