3

您好,我正在 Eclipse 中开发一个项目并尝试将其导出,以便将其发送给一些朋友。我对如何导出一无所知,所以我看了一些 YouTube 视频,因为这就是我能找到的关于该主题的全部内容。视频说;

  1. 文件 > 导出
  2. Java > 可运行的 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();
    }
}

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

4

3 回答 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
于 2013-07-08T00:32:13.647 回答
1

您的问题与本机库有关,当您运行应用程序时,找不到所需的库。我假设您已按照以下说明进行操作

http://www.lwjgl.org/wiki/index.php?title=Setting_Up_LWJGL_with_Eclipse

要运行您的应用程序,您必须

java -Djava.library.path="<path to lwjgl native files>" -jar my_jar_name.jar
于 2013-07-08T00:35:37.620 回答
1

在参考了我刚刚发现的另一个 Stack Overflow 问题后,我想通了。我使用 JarSplicer 创建了一个 Fat Jar,将本地人包含在我的 jar 中,并且效果很好。我现在可以通过双击运行我的应用程序,它就像在 Eclipse 中一样运行,感谢您的支持!

将eclipse项目导出到jar

于 2013-07-08T01:24:29.283 回答