无法在Win7中find或加载主类,或在OSX中的线程“main”java.lang.NoClassDefFoundError中发生exception

我看到这里有很多类似的线索,但他们并没有帮助我。

我试过在Win7和OSX Mountain Lion中运行:1)javatesting2)java -cp。 testing

//Test.java class HelloWorld { public static void main(String[] args){ System.out.println("Hello World!"); } } 

1)对于Win7错误:

错误:无法find或加载主类Test

2)OSX Mountain Lion错误:

线程“main”中的exceptionjava.lang.NoClassDefFoundError:Test导致:java.lang.ClassNotFoundException:在java.net.URLClassLoader上testing$ 1.run(URLClassLoader.java:202)at java.security.AccessController.doPrivileged(Native Method )在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)

真的不知道这里有什么错… 🙁

谢谢,奥斯卡

Solutions Collecting From Web of "无法在Win7中find或加载主类,或在OSX中的线程“main”java.lang.NoClassDefFoundError中发生exception"

我的Test.java

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

我与bash对话:

 Neoten:bin marko$ ls -al total 8 drwxr-xr-x . drwxr-xr-x .. -rw-r--r-- HelloWorld.class drwxr-xr-x test Neoten:bin marko$ java HelloWorld HW Neoten:bin marko$ 

您没有发布运行目录的内容,所以这是导致错误的最可能的原因。

文件的名称应该与which is public类名相同,并且具有main()方法。 在你的情况下,从Test.java重命名文件名将编译并将创建HelloWorld.class文件不Test.class,因为没有在您的文件中声明的Test类。

在创建.class文件之后,使用java HelloWorld运行它

了解更多点击这里和这里

所以这里是一个例子

 //Filename abc.java public class hi { public static void main(String[] args) { System.out.println("Hell"); } } 

输出

 abc.java:1: class hi is public, should be declared in a file named hi.java public class hi ^ 1 error 

但如果你这样做

  //Filename abc.java class hi { public static void main(String[] args) { System.out.println("Hell"); } } 

它会创建hi.class文件

 D:\>java hi Hell 

看起来你的班级必须和文件名有相同的名字。
test.java必须包含class test

你必须把你的类名和你的文件一样,并且你的类的目录位置可以转换成你的类包。 这是Java如何支持名称空间,没有声明的包称为默认名称空间 – 不建议使用默认名称空间。

 // my/name/space/HelloWorld.java package my.name.space; public class HelloWorld { ... }