1

我正在尝试运行一个非常简单的程序并遇到错误。我制作了一个非常简单的 helloworld java 程序,但无法从 Mac 上的终端运行它。我检查以确保类路径设置正确,并且对它为什么不运行感到困惑。

这是程序:

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

这是终端命令:

Last login: Thu May  2 12:01:50 on ttys000
172-26-125-179:~ rohan$ cd /Users/rohan/Desktop 
172-26-125-179:Desktop rohan$ ls
Hello.java
172-26-125-179:Desktop rohan$ echo $CLASSPATH

172-26-125-179:Desktop rohan$ export CLASSPATH=/Users/rohan/Desktop
172-26-125-179:Desktop rohan$ echo $CLASSPATH
/Users/rohan/Desktop
172-26-125-179:Desktop rohan$ java 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:202)
    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)
172-26-125-179:Desktop rohan$ 

任何想法将不胜感激! 更新忽略前面的情况,这是对我的问题的更好看法:

Last login: Thu May  2 13:05:17 on ttys000
172-26-125-179:~ rohan$ cd /Users/rohan/Dropbox/Current/ds/lab6 
172-26-125-179:lab6 rohan$ ls
Hello.java
172-26-125-179:lab6 rohan$ cat Hello.java
public class Hello {
    public static void main(String[] args) {
        System.out.println("hi");
    }
}
172-26-125-179:lab6 rohan$ echo $CLASSPATH

172-26-125-179:lab6 rohan$ export CLASSPATH=/Users/rohan/Dropbox/Current/ds/lab6 
172-26-125-179:lab6 rohan$ echo $CLASSPATH
/Users/rohan/Dropbox/Current/ds/lab6
172-26-125-179:lab6 rohan$ javac Hello.java
172-26-125-179:lab6 rohan$ java Hello.class
Exception in thread "main" java.lang.NoClassDefFoundError: Hello/class
Caused by: java.lang.ClassNotFoundException: Hello.class
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    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)
172-26-125-179:lab6 rohan$ 
4

4 回答 4

1

你需要编译它。

javac Hello.java
java Hello

第一个命令Hello.class在您当前的工作目录(在您的示例中为桌面)中生成一个文件 . 第二个运行带有主类的 Java 程序Hello

注意.java第二个命令中没有。如果您编写,JRE 会查找在包中java Hello.java调用的类(注意输出:在“Hello/java”中找不到类)。javaHello

如果javac给您一个错误,那么您可能需要安装 Java Development Kit (JDK) 以及 Java Runtime Environment (JRE)。

于 2013-05-02T16:50:58.420 回答
1

尝试:

$ javac Hello.java

$ java 你好

于 2013-05-02T16:50:32.377 回答
0

java程序是使用javac编译器编译的。它与 jdk 捆绑在一起。你需要安装jdk然后编译它

 javac Hello.java

它将生成一个类文件 Hello.class 然后您可以将类文件运行为

java Hello
于 2013-05-02T16:51:57.447 回答
0

运行 Java 时,不要在要运行的类名中包含“.java”。尝试

java Hello

ls输出来看,它甚至还没有编译。你当然必须先编译它。

javac Hello.java

编辑

问题的补充说明现在它成功编译javac。但现在该命令java Hello.class正在运行。不要在要运行的 Java 类名中包含“.class”(或之前的“.java”)。

解决办法还是:

java Hello
于 2013-05-02T16:50:30.450 回答