java - JVM 找不到我的类 : java. lang.NoClassDefFoundError

标签 java

我的目录结构是这样的。

PackagesUnit3/com/myname/start/PackagesTest.java
(此类包含我的主语句和导入语句“import com.systems.mui.*;)

PackagesUnit3/com/systems/mui/Test.java
(此类包含包语句“package com.systems.mui;”)

将 PackageUnit3 作为我的基本目录,我可以使用以下语句成功编译这两个类

"javac com/myname/start/PackagesTest.java"

但是我不能用命令运行代码

"java com.myname.start.PackagesTest"

Error: "Exception in thread "main" java.lang.NoClassDefFoundError: com/myname/start/PackagesTest (wrong name: PackagesTest)"

编译器成功地为每个 java 类生成了 .class 文件,并将它们放在与源文件相同的位置。

根据 Horstmann 的说法,“Core Java”第 9 版。 p. 186, 我的“java”命令语法应该可以工作。

我不必指定当前目录 ("."),因为我没有使用类路径 (-cp) 选项。

请注意:我使用"SUBST R: " 命令将PackagesUnit3 目录建立为基本目录。我的实际命令行看起来像 R:>

有什么建议吗??

最佳答案

鉴于异常,您似乎缺少 package 语句:

package com.myname.start;

您的包声明应与您的目录结构相匹配,然后将使用 com.myname.start.PackageTest 的正确完全限定名称生成该类。

要么在 IDE 中编译,它会为您解决问题,要么使用可选的 -d 参数从包结构的根目录编译以指定根输出目录,例如

$ javac -d bin com/myname/start/*.java
$ java -cp bin com.myname.start.PackageTest

关于java - JVM 找不到我的类 : java. lang.NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18020017/

相关文章:

javascript - 如何从 javascript 调用 IBM Watson 服务

java - FragmentActivity 强制转换以避免静态引用

java - 如何从 Windows 小工具进行 GWT RPC 调用?

java - 使用 AsyncTask 进行 android 网络连接

java - Jackson 没有字段名称的序列化

java - 如何在 SparseDoubleMatrix2D (Java Colt 库)中找到最大值?甚至在一维矩阵中

java - 即使在 java webapp 中进行验证检查后也存在信任边界冲突

java - 如何让一个变量来指示另一个对象?

java - 无法让Spring事务回滚(java+mysql)

java - JSON 响应中的 Json 数组始终为 null