从控制台运行java的NoClassDefFoundError

时间:2012-11-12 16:06:09

标签: java linux terminal

当我尝试在终端上的Linux上运行Java时,会发生以下情况:

Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorldApp/class
Caused by: java.lang.ClassNotFoundException: HelloWorldApp.class
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)

任何人都可以帮我吗?

编辑:我在字节码文件的文件夹中并在终端上运行:

bash-4.1$ java class HelloWorldApp

源文件:

/**
 * The HelloWorldApp class implements an application that
 * simply prints "Hello World!" to standard output.
 */
class HelloWorldApp {
    public static void main(String[] args) {
    System.out.println("Hello World!"); // Display the string.
    }
}

2 个答案:

答案 0 :(得分:1)

您正在执行

java HelloWorldApp.class

但必须

java HelloWorldApp

您不能将类附加到您的通话中,但名称可以是明确的类名。

另外,正如其他人所说,最好使用包,因为默认包中的类不能正常工作。

答案 1 :(得分:-1)

你还应该注意,如果你在代码中有包声明,即使你尝试了所有类似设置CLASSPATH的花哨修复,它也会搞砸了。例如,如果你有:

package blah;

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

行:包裹等等; 编译后会导致java HelloWorld失败。因此,删除此行,您应该能够通过cmd行运行src。