-1

所以我试图在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”运行代码

4

3 回答 3

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

于 2013-04-23T04:31:54.363 回答
0

执行以下步骤 1. 将 HelloWorld.java 文件复制到空目录 2. javac -d 。HelloWorld.java 3. java -classpath 。helloworld.HelloWorld

您的设置有 2 个问题。1.编译时需要使用-d选项。这将根据包结构生成 .class 文件。这对于运行 .class 文件很有用。之所以如此,是因为 java 需要包结构中的 .class 文件。2. 将类路径指定为“.” 它代表运行程序的当前目录。

你也可以使用这个 1. javac -dc:\temp HelloWorld.java 3. java -classpath c:\temp helloworld.HelloWorld

于 2013-04-23T04:38:47.367 回答
0

只需将您的类名从 Helloworld 更改为任何其他(如 hl)并像这样运行(假设在 e 驱动器中) E:>cd helloworld

E:\helloworld>javac hl.java

E:\helloworld>cd ..

E:>java helloworld.hl 你好世界

于 2013-04-23T04:57:02.623 回答