即使存在.class文件,也会出现java.lang.NoClassDefFoundError错误

时间:2016-09-29 01:34:32

标签: java

这是我的文件结构:

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)

知道为什么吗?

1 个答案:

答案 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