使用导入的库运行jar文件有问题吗?

时间:2019-01-02 04:29:39

标签: java build jar lwjgl classnotfoundexception

我是Java的新手,并且编写了一个使用LWJGL 3的脚本。该程序在Eclipse IDE中运行得很好,但是当我尝试将其导出为可运行的Jar文件时(检查了程序包所需的库字段),然后尝试通过Windows命令行运行它,得到的错误消息如下:

Exception in thread "main" java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:61)
Caused by: java.lang.NoClassDefFoundError: org/lwjgl/glfw/GLFW
    at renderEngine.TestEngine.main(TestEngine.java:18)
    ... 5 more
Caused by: java.lang.ClassNotFoundException: org.lwjgl.glfw.GLFW
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:471)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    ... 6 more

我假设这是由于无法访问我导入的库而导致的问题,但是在网上搜索了一会儿之后,我找不到解决该问题的正确指导。在大多数情况下,是有人问这个问题,然后只是说他们自己解决了问题,或者是其他人解释了这个问题,但实际上并没有协助解决。我希望有人能为我提供有关如何解决此问题的指导性解释,以及是否可以解释为避免将来出现问题。

如果需要更多信息来解决该问题,我将很乐意提供。

更新: 看来问题出在GLFW,而不是整个图书馆。重新读取错误时,当我还使用来自同一个库的其他导入(例如OpenGL)时,唯一找不到或加载的是GLFW。另外,它指定的行是我从GLFW调用函数的行,而不是在导入包时调用的行,不知道那是因为在导入不成功或可能存在其他问题时未调用错误在包装本身中。 我不知道我是否正确,只是尝试通过提供更多信息来提供帮助。

谢谢,奥利弗:)

1 个答案:

答案 0 :(得分:1)

您可以将项目导出为“可运行的jar”(在项目上单击鼠标右键->“导出”->“可运行的jar”),可以选择将所有依赖项打包到生成的jar中。

使用突出显示的库处理选项。

enter image description here