Java 从Eclipse将带有库的项目导出到可运行jar

Java 从Eclipse将带有库的项目导出到可运行jar,java,eclipse,executable-jar,Java,Eclipse,Executable Jar,我试图导出一个我正在开发的游戏的测试(使用Slick库),发送给缺少IDE的合作伙伴,eclipse中的导出都进行得很顺利,但当我尝试从命令提示符下运行它时,我得到了回报 C:\Users\Noah\Desktop>java -jar test.jar Exception in thread "main" java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.i

我试图导出一个我正在开发的游戏的测试(使用Slick库),发送给缺少IDE的合作伙伴,eclipse中的导出都进行得很顺利,但当我尝试从命令提示符下运行它时,我得到了回报

C:\Users\Noah\Desktop>java -jar test.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(JarRsrcLoa
der.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:141)
        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 org.nor.Main.main(Main.java:16)
        ... 5 more

C:\Users\Noah\Desktop>
C:\Users\Noah\Desktop>java-jartest.jar
线程“main”java.lang.reflect.InvocationTargetException中出现异常
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源)
在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源)
位于java.lang.reflect.Method.invoke(未知源)
位于org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoa
der.java:58)
原因:java.lang.UnsatifiedLink错误:java.library.path中没有lwjgl
位于java.lang.ClassLoader.loadLibrary(未知源)
位于java.lang.Runtime.loadLibrary0(未知源)
位于java.lang.System.loadLibrary(未知源)
位于org.lwjgl.Sys$1.run(Sys.java:73)
位于java.security.AccessController.doPrivileged(本机方法)
位于org.lwjgl.Sys.doLoadLibrary(Sys.java:66)
位于org.lwjgl.Sys.loadLibrary(Sys.java:95)
位于org.lwjgl.Sys(Sys.java:112)
在org.lwjgl.opengl.Display上(Display.java:141)
位于org.newdawn.slick.AppGameContainer$1.run(AppGameContainer.java:39)
位于java.security.AccessController.doPrivileged(本机方法)
位于org.newdawn.slick.AppGameContainer(AppGameContainer.java:36)
位于org.nor.Main.Main(Main.java:16)
... 还有5个
C:\Users\Noah\Desktop>
知道出了什么问题吗


注意:项目在eclipse中运行得非常好。

您必须将JAR添加到:

  • java调用中的类路径

  • 主jar的Manifest.mf


Java不会自动加载JAR,除非它们位于这些位置之一。

您还需要本地lwjgl库并指向它。导出Jar功能无法处理此问题


阅读lwjgl手册了解如何进行此操作。

如果要使用slick,您应该阅读关于slick的“入门”指南。Slick有几个依赖项,它们使用dll与opengl通信。您需要指定这些dll的保存位置,以便这些依赖项可以加载dll。我找到了可能有助于您实现此目的的链接。

尝试使用文件->属性->Java构建路径->排序和导出

我尝试了此操作,但当我插入提供的代码时,我发现错误
文件无法解析为类型。
没有建议。你知道怎么回事吗?没关系,导入了java.io,工作起来很有魅力,万分感谢!尝试了这个,我假设您应该在选择所有后构建,仍然是相同的错误。