0

因此,当我尝试从命令提示符打开一个不在包中的 java 类时,它一切正常,但是当我尝试打开一个包中的类时,它给了我 NoClassDefFoundError。当我尝试打开类(java somepackage/someclass)时列出包时,它说它无法加载或找到主类。

有什么帮助吗?

4

3 回答 3

1

我可以推断的是,你有两个类:

测试.java:

// no package defined here

class Test{
    public static void main(String[] args){
        System.out.println("Test");
    }
}

因此您可以使用以下命令编译和运行它:

javac Test.java
java Test

另一类:

测试.java:

package test; // package defined here

class Test{
    public static void main(String[] args){
        System.out.println("Test");
    }
}

因此,做同样的事情会给你带来错误。为此,您需要位于终端或 cmd 中“test”文件夹的父目录中并使用:

java test.Test

编译器没有问题。您可以像往常一样使用“test”文件夹中的 javac Test.java 进行编译。

于 2013-07-02T10:08:37.267 回答
0

NoClassDefFoundError 意味着您的 JVM 在运行时找不到您的类。这可能是因为它不可见(设置为私有或受保护,或者只是没有访问修饰符)。

您的构建路径中也可能缺少它

于 2013-07-02T10:03:02.710 回答
0
    package pkg1;
    public class Dataguise{
            public static void main(String [] args){
            System.out.println("My name is Maninder Singh");
            }
    }

    Suppose this is my code. My package name is pkg1.
    1. First you need to create pkg1 dirrectory if not existed.
    2. Run "javac Dataguise.java" command
    3. It will generate the "Dataguise.class" file and move this file to "pkg1" folder
    4. Now run "pkg1.Dataguise" command it will work.

    I was having the same issue so sharing my experience.
于 2021-09-16T22:25:59.190 回答