从Eclipse将带有库的java项目导出到可运行jar
我试图导出一个我正在开发的游戏的测试(使用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>
知道出了什么问题吗
注意:该项目在eclipse中运行得非常好
# 1 楼答案
您还需要本地lwjgl库并指向它。导出Jar功能无法处理此问题
阅读lwjgl手册了解如何进行此操作
# 2 楼答案
您必须将罐子添加到以下位置之一:
java调用中的类路径
舱单。主罐的mf
Java不会自动加载JAR,直到它们位于这些位置之一
# 3 楼答案
如果你打算使用slick,你应该仔细阅读它的“入门”指南。Slick有几个依赖项,它们使用dll与opengl通信。您需要指定这些dll的保存位置,以便这些依赖项可以加载dll。我发现this链接可能有助于您这样做
# 4 楼答案
尝试使用文件->;房地产->;Java构建路径->;订购和出口