gpt4 book ai didi

java - 在 Java 中使用外部库

转载 作者:行者123 更新时间:2023-12-01 14:03:42 24 4
gpt4 key购买 nike

这是我在运行时不断收到的错误:

[java] Exception in thread "main" java.lang.NoClassDefFoundError: org/lwjgl/LWJGLException

请注意,这是一个运行时错误,而不是编译时错误。我的 build.xml 中的两个任务都有相同的类路径集,并且编译任务每次都运行良好:

<path id="classpath">
<fileset dir="lib" includes="*.jar" />
</path>

<target name="compile">
<mkdir dir="build/classes"/>
<javac
srcdir="src"
classpathref="classpath"
includeantruntime="false"
destdir="build/classes"
/>
</target>
...
<target name="run" depends="clean,compile,jar">
<java
jar="build/jar/${project.name}.jar"
fork="true"
classpathref="classpath"
>
<sysproperty key="java.library.path" path="${path.lib}/windows"/>
</java>
</target>

尝试通过命令行手动运行 jar 会产生相同的结果:

java -cp .:lib/*.jar -Djava.library.path=lib/windows -jar build/jar/JUtopia.jar
Exception in thread "main" java.lang.NoClassDefFoundError: org/lwjgl/LWJGLException

请注意,库 jarfile 没问题:

bash-3.1$ jar -tf lib/lwjgl.jar | grep LWJGLException
org/lwjgl/LWJGLException.class

并且 native 库已就位:

bash-3.1$ ls lib/windows/lwjgl.dll
lib/windows/lwjgl.dll

问题:我哪里出了问题?我已经解决这个问题近3天了。任何帮助将不胜感激。

完整结果堆栈:

clean:
[delete] Deleting directory C:\Users\mkumpan\Projects\JUtopia\build

compile:
[mkdir] Created dir: C:\Users\mkumpan\Projects\JUtopia\build\classes
[javac] Compiling 12 source files to C:\Users\mkumpan\Projects\JUtopia\build\classes

jar:
[mkdir] Created dir: C:\Users\mkumpan\Projects\JUtopia\build\jar
[jar] Building jar: C:\Users\mkumpan\Projects\JUtopia\build\jar\JUtopia.jar

run:
[java] Exception in thread "main" java.lang.NoClassDefFoundError: org/lwjgl/LWJGLException
[java] at JUtopia.<init>(Unknown Source)
[java] at JUtopia.main(Unknown Source)
[java] Caused by: java.lang.ClassNotFoundException: org.lwjgl.LWJGLException
[java] at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
[java] at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
[java] at java.security.AccessController.doPrivileged(Native Method)
[java] at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
[java] at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
[java] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
[java] at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
[java] ... 2 more

P.S.:注意,我在 Windows 环境中使用 Console2 和 bash 来进行命令行工作,因此使用的是 Windows native 语法和 Linux shell 语法。使用 vanilla cmd 运行 jar 会产生相同的结果。

最佳答案

-jar...

使用此选项时,JAR 文件是所有用户类的源,其他用户类路径设置将被忽略。 - reference

尝试setting the Class-Path in the JAR

或者尝试在不使用 -Jar 选项的情况下运行,通过在命令行上指定主类

关于java - 在 Java 中使用外部库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19114125/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com