正确导出我的Eclipse项目作为Runnable Jar

时间:2013-07-08 00:25:50

标签: java eclipse jar executable-jar unsatisfiedlinkerror

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

  1. 文件>导出
  2. Java> Runnable Jar
  3. 下一步
  4. 设置项目启动配置,导出位置和库配置。 (我正在使用lwjgl和slick 2d)所以我选择了“将所需的包打包到生成的JAR中”。
  5. 然后我试图在桌面上双击启动它,没有。然后我尝试从命令提示符“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项目,所以我以前没有这样做过。

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

答案 2 :(得分:1)

在我刚刚发现的另一个Stack Overflow问题之后,我想出来了。我使用JarSplicer创建了一个Fat Jar,其中包含了本机到我的jar中,并且它工作得很好。我现在可以通过双击它来运行我的应用程序,它就像在Eclipse中一样运行,谢谢你的支持!

Exporting eclipse project to jar