java - 运行类时出现 NoClassDefFoundError

标签 java eclipse class

我正在尝试运行一个类,但出现以下错误:

java.lang.NoClassDefFoundError: MyClass
Caused by: java.lang.ClassNotFoundException: MyClass
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
 Exception in thread "main" 

它确实发生了,尽管main方法在 MyClass我直接运行这个类。 尽管我从该类启动了程序,但为什么找不到该类?

这是一些代码:

public class MyClass extends A implements B{
public MyClass() throws Exception {
//make some initializations
}
public static void main(final String[] args) throws Exception {
MyClass myClass = new MyClass();
//do stuff with myClass
}
}

PS:我正在使用Eclipse Indigo .

编辑 我已在命令行中运行该类两次:

D:\Eclipse JEE\Workspace2\Example\target\classes\com\example\main>java com.example.main.MyClass
Exception in thread "main" java.lang.NoClassDefFoundError: com/example/main/MyClass
Caused by: java.lang.ClassNotFoundException: com.example.main.MyClass
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: com.example.main.MyClass.  Program will exit.

D:\Eclipse JEE\Workspace2\Example\target\classes\com\example\main>java GeoDAOImpl
Exception in thread "main" java.lang.NoClassDefFoundError: MyClass(wrong name: com/example/main/MyClass)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
    at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: MyClass.  Program will exit.

最佳答案

您并没有真正向我们提供足够的信息来确定,但我的猜测是:

  • 您没有提供正确的完全限定类名
  • 您的类不在类路径中

对于第一种情况的示例,如果您的代码如下所示:

package foo;

public class MyClass {
    public static void main(String[] args) {
    }
}

那么你应该运行:

java foo.MyClass

编辑:根据提供的额外信息,我怀疑我知道发生了什么。我怀疑该类是创建的而不是在包中,并且创建了一个仅运行MyClass的运行配置。它现在已移至 com.example.main 中,但运行配置未更新。

进入运行配置编辑器(单击“运行”按钮旁边的下拉列表,然后选择运行配置...)并找到“MyClass”,然后检查要运行哪个类,并将其编辑为输入正确的包名称。

关于java - 运行类时出现 NoClassDefFoundError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8940179/

相关文章:

java - 使用 maven 构建应用程序

python - 覆盖父类的方法

c++ - char 赋值中的不兼容类型?

java - 在 Eclipse 中使用 maven-release-plugin

java - eclipse tomcat设置页面中的Tomcat URIEncoding ="UTF-8"

java - 在 Cloud 9 上运行 Java

java - log4j 的自定义布局

java - 通过命令行和 JDBC 查询获取的结果之间的差异

java - 有没有办法简化我编写的这个终端类或使其更高效:) thnks

java - Android 代码在后端出现错误。但我不知道代码哪里出了问题