这是我的文件结构:
T1 -> T1sample -> src -> t1sample -> T1.java
T1 -> T1sample -> src -> t1sample -> T1.class
我自己创建了这些文件夹和文件(除了T1.class,我通过运行' javac T1.java'来自shell)。
这是T1.java:
package t1sample;
public class T1 {
public static void main(String []args) {
System.out.println('Test');
}
}
现在,当我尝试运行java T1
时,它会返回错误消息:
java.lang.NoClassDefFoundError: T1 (wrong name: t1sample/T1)
知道为什么吗?
答案 0 :(得分:2)
只是为了澄清您获得NoClassDefFoundError的原因是因为您将t1sample
声明为包。因此,T1必须从src
目录运行,而不是从t1sample
运行。
首先创建目录结构...(使用gvim作为编辑器)
~/Desktop $ mkdir -p T1sample/src/t1sample && cd T1sample/src/t1sample && gvim T1.java
创建源...
package t1sample;
public class T1 {
public static void main(String... args) {
System.out.println("Test");
}
}
编译......
~/Desktop $ cd T1sample/src/t1sample/
~/Desktop/T1sample/src/t1sample $ javac T1.java
确认......
~/Desktop/T1sample/src/t1sample $ ls -la
total 2
-rw-r--r-- 1 Edward None 411 Sep 28 21:46 T1.class
-rw-r--r-- 1 Edward None 137 Sep 28 21:45 T1.java
从src目录运行...
~/Desktop/T1sample/src/t1sample $ cd ..
~/Desktop/T1sample/src $ java t1sample.T1
Test