所以我试图在java中编译并运行一个问题而我无法运行它。我只是想用一个HelloWorld类和一个打印“hello world”的主函数做一个基本包。
package helloworld;
public class HelloWorld {
public static void main(String args[]) {
System.out.println("Hello world \n");
}
}
然后我调用javac HelloWorld.java来编译它。然后,当我尝试执行代码时,我收到此错误:
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld (wrong name: helloworld/HelloWorld)
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)
编辑: 我正在尝试使用命令“java HelloWorld”
运行代码答案 0 :(得分:4)
让我们看看你是否理解我做了什么
tmp$ mkdir helloworld
tmp$ vi helloworld/HelloWorld.java
#paste the content of the class *including* package definition
tmp$ cd helloworld/
helloworld$ javac HelloWorld.java
helloworld$ java HelloWorld
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld (wrong name: helloworld/HelloWorld)
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: HelloWorld. Program will exit.
helloworld$ cd ..
tmp$ java helloworld.HelloWorld
Hello world
另外,请阅读:http://www.cs.usfca.edu/~parrt/course/601/lectures/java.tools.html
答案 1 :(得分:0)
执行以下步骤 1.将HelloWorld.java文件复制到空目录 2. javac -d。 HelloWorld.java 3. java -classpath。 helloworld.HelloWorld
您的设置存在2个问题。 1.编译时需要使用-d选项。这将根据包结构生成.class文件。这对于运行.class文件很有用。这是因为java期望包结构中的.class文件。 2.将类路径指定为'。'它代表当前目录运行程序。
您也可以使用此功能 1. javac -d c:\ temp HelloWorld.java 3. java -classpath c:\ temp helloworld.HelloWorld
答案 2 :(得分:0)
只需将您的类名从Helloworld更改为任何其他(如hl)并像这样运行(假设在电子驱动器中) E:> cd helloworld
E:\ helloworld> javac hl.java
E:\ helloworld> cd ..
E:> java helloworld.hl 你好世界