Java NoClassDefFoundError即使在添加类路径时也会发生
我正试图在https://github.com/samet/Coursera-Algorithms-I-Assignment-1中编译并运行PercolationVisualizer
。根据http://introcs.cs.princeton.edu/java/stdlib/,所需的依赖项StdDraw.java
和In.java
应该出现在stdlib
包中
克隆存储库后,我将stdlib.jar复制到src
目录,然后使用以下命令编译PercolationVisualizer:
javac -cp .:stdlib.jar PercolationVisualizer.java
(我也为Percolation.java
做了同样的事)。然而,当我尝试使用java PercolationVisualizer
运行程序时,我得到以下错误:
Exception in thread "main" java.lang.NoClassDefFoundError: In
at PercolationVisualizer.main(PercolationVisualizer.java:62)
Caused by: java.lang.ClassNotFoundException: In
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more
我不理解NoClassDefFoundError
的In
,因为它应该包含在stdlib
中。有人能解释这种行为吗
# 1 楼答案
我终于取消了stdlib。将jar放入工作目录中,然后进行编译。(这确实是第一个使用http://introcs.cs.princeton.edu/java/stdlib/中描述的stdlib的方法)
# 2 楼答案
如果您在Windows上,请使用分号作为类路径分隔符
如果您在linux/*nix上,请使用冒号作为类路径分隔符
有关更多信息,请查看here
如果要调试编译过程,请使用“-verbose”标志。它会显示你的类路径,即“lodaingjar_文件”声明。如果它没有识别出您的jar文件,它现在将显示“loading”语句