我正在尝试运行 Java 应用程序,但出现此错误:java.lang.ClassNotFoundException:冒号后是缺失类的位置。但是,我知道该位置...
我正在尝试运行 Java 应用程序,但出现此错误:
java.lang.ClassNotFoundException:
冒号后面是缺失类的位置。但是,我知道该位置不存在,因为该类位于其他地方。我该如何更新该类的路径?这与类路径有关吗?
类路径是加载类的位置列表。
这些“位置”可以是目录,也可以是 jar 文件。
对于目录,JVM 将遵循预期的模式来加载类。如果我的类路径中有目录 C:/myproject/classes ,并且我尝试加载类 的目录.目录.Foo com com mycompany 的 mycompany 在该目录中 查找名为 Foo.class
在第二个实例中,对于 jar 文件,它将在 jar 文件中搜索该类。jar 文件实际上只是像上面一样的目录的压缩集合。如果您解压缩 jar 文件,您将获得一堆遵循上述模式的目录和类文件。
因此,当 JVM 尝试加载类定义时,它会从头到尾遍历类路径,查找类的定义。例如,在类路径中:
C:/myproject/classes;C:/myproject/lib/stuff.jar;C:/myproject/lib/otherstuff.jar
JVM 将首先尝试查找目录 classes ,然后查找 stuff.jar ,最后查找 otherstuff.jar .
当您收到 ClassNotFoundException 时,这意味着 JVM 已遍历整个类路径,但未找到您尝试引用的类。解决方案(在 Java 世界中经常出现)是检查您的类路径。
您可以在命令行上通过输入 java -cp 然后输入您的类路径来定义类路径。在 Eclipse 等 IDE 中,您将有一个菜单选项来指定您的类路径。