当我从Linux命令行运行Java类文件时,为什么会出现NoClassDefFoundError?

tie*_*er1 9 java compilation class

我试图test.class从linux命令行运行一个文件.我编译了javac test.java生成test.class文件的文件.当我运行该命令时,java test它会抛出一个未找到类的异常.我也尝试使用相同的结果指定包名称.这是输出,有人可以帮忙吗?根据谷歌搜索,我相信我的语法是正确的.

[root@localhost usr]# java test
Exception in thread "main" java.lang.NoClassDefFoundError: test (wrong name: testJava/test)
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:634)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:277)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:73)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:212)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)
Could not find the main class: test. Program will exit.
Run Code Online (Sandbox Code Playgroud)

Pat*_*k87 8

您需要使用javac编译.java文件:

  javac MyFile.java
Run Code Online (Sandbox Code Playgroud)

然后使用java运行该文件

  java MyFile
Run Code Online (Sandbox Code Playgroud)

如果你这样做但它仍然不起作用,这意味着你需要确保文件中的文件和类名具有相同的名称...所以MyFile.java包含

  class MyFile
  {
     // ...
     public static void main(String[] args)
     {
        // ...
     }
     // ...
  }
Run Code Online (Sandbox Code Playgroud)


Ank*_*kur 4

java testJava.test从testJava的父目录使用