今天想测试个类,路径为/workspace/javalearn/src/JVM/VolatileTest.java,没有包含其他类。
然后用终端cd到JVM下,javac VolatileTest.java,正常,同目录下生成了VolatileTest.class文件。
java VolatileTest,出错了,报错
Exception in thread "main" java.lang.NoClassDefFoundError: VolatileTest (wrong name: JVM/VolatileTest)
查了很多资料,说什么classpath错了之类的,改了也没用。
后来看到一个资料http://www.cnblogs.com/xing901022/p/4185514.html,讲说可能是java文件里写了包的问题。我一看,果然是
我后退一层,从....src/JVM/ 退到src/, 重新执行,果然就可以了
说明因为代码中的“package JVM;”,使用java指令时会执行此句,在JVM/ 目录下执行java VolatileTest 会等同于 路径为JVM/JVM/VolatileTest,当然会出错。
希望能给其他同学带来一些帮助。
本文通过实例演示了解决Java环境中因包声明导致的NoClassDefFoundError错误的方法。作者尝试在命令行编译并运行一个位于特定目录结构下的Java类,并遇到了错误提示。通过调整执行位置和理解Java类路径的工作原理,最终解决了问题。

1528

被折叠的 条评论
为什么被折叠?



