我知道有很多关于NoClassDefFoundError的帖子,他们似乎都在讨论jar文件。虽然我对日食中的java感到很自在,但我很遗憾为什么我能想到的最简单的东西不起作用,除非他们在大学方面打破了这个。
public class hello {
public static void main (String args[]) {
System.out.println ("Hello World!");
}
}
这是整个hello.java程序,它抛出了这个:
Exception in thread "main" java.lang.NoClassDefFoundError: hello/java
Caused by: java.lang.ClassNotFoundException: hello.java
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
Could not find the main class: hello.java. Program will exit.
$ CLASSPATH = /:在/ usr /爪哇/最新/ lib中:/家庭/ 41 /名为myUsername / bin中
java -verbose hello.class
给出:
[Opened /usr/java/jdk1.6.0_10/jre/lib/rt.jar] [Loaded java.lang.Object from /usr/java/jdk1.6.0_10/jre/lib/rt.jar] [Loaded java.io.Serializable from /usr/java/jdk1.6.0_10/jre/lib/rt.jar] [Loaded java.lang.Comparable from /usr/java/jdk1.6.0_10/jre/lib/rt.jar] [Loaded java.lang.CharSequence from /usr/java/jdk1.6.0_10/jre/lib/rt.jar] [Loaded java.lang.String from /usr/java/jdk1.6.0_10/jre/lib/rt.jar] [Loaded java.lang.reflect.GenericDeclaration from /usr/java/jdk1.6.0_10/jre/lib/rt.jar] [Loaded java.lang.reflect.Type from /usr/java/jdk1.6.0_10/jre/lib/rt.jar] [Loaded java.lang.reflect.AnnotatedElement from /usr/java/jdk1.6.0_10/jre/lib/rt.jar] [Loaded java.lang.Class from /usr/java/jdk1.6.0_10/jre/lib/rt.jar] ... [Loaded sun.misc.AtomicLong from /usr/java/jdk1.6.0_10/jre/lib/rt.jar] ...
再次例外。
java -version
给出:
java version "1.6.0_10-rc2" Java(TM) SE Runtime Environment (build 1.6.0_10-rc2-b32) Java HotSpot(TM) Server VM (build 11.0-b15, mixed mode)
答案 0 :(得分:9)
首先,使用javac
.java
编译您的hello.java
文件,以生成hello.class
文件。然后,使用java
hello
命令执行该类 - 使用.class
命令时不包含java
扩展名。
另外,我想指出,类名以大写字母开头是惯例 - hello
应为Hello
。
答案 1 :(得分:3)
我认为你先实际编译了这门课程吗?:
javac hello.java
java hello
答案 2 :(得分:2)
java -verbose hello.class
...意思是“嘿,Java,在'hello.class'类中运行main()方法。
Java找不到名为“hello.class”的类。你的班级被称为“你好”。
java -verbose hello
自'。'在你的类路径中,Java会在'./hello.class'中找到'hello'类。
额外提示:在Java中使用大写字母来启动类是常规的。
public class Hello {
这有助于区分代码其余部分中的类引用和变量引用。
Dessert dessert= new Dessert("tiramisu")
答案 3 :(得分:1)
java -verbose hello