有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

Java NoClassDefFoundError即使在添加类路径时也会发生

我正试图在https://github.com/samet/Coursera-Algorithms-I-Assignment-1中编译并运行PercolationVisualizer。根据http://introcs.cs.princeton.edu/java/stdlib/,所需的依赖项StdDraw.javaIn.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

我不理解NoClassDefFoundErrorIn,因为它应该包含在stdlib中。有人能解释这种行为吗


共 (2) 个答案

  1. # 2 楼答案

    如果您在Windows上,请使用分号作为类路径分隔符

    javac -cp ".;stdlib.jar" PercolationVisualizer.java Percolation.java WeightedQuickUnionUF.java PercolationStats.java
    

    如果您在linux/*nix上,请使用冒号作为类路径分隔符

    javac -cp ".:stdlib.jar" PercolationVisualizer.java Percolation.java WeightedQuickUnionUF.java PercolationStats.java
    

    有关更多信息,请查看here

    如果要调试编译过程,请使用“-verbose”标志。它会显示你的类路径,即“lodaingjar_文件”声明。如果它没有识别出您的jar文件,它现在将显示“loading”语句