我正在尝试运行一个非常简单的程序并遇到错误。我做了一个非常简单的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$
答案 0 :(得分:1)
尝试:
$ javac Hello.java
$ java Hello
答案 1 :(得分:1)
你需要编译它。
javac Hello.java
java Hello
第一个命令在当前工作目录(示例中为Desktop)中生成一个文件Hello.class
。第二个使用主类Hello
运行Java程序。
请注意第二个命令中没有.java
。如果您编写java Hello.java
,JRE会在包java
中查找名为Hello
的类(请注意输出:在“Hello / java”中找不到类)。
如果javac
给出错误,那么您可能需要安装Java Development Kit(JDK)以及Java Runtime Environment(JRE)。
答案 2 :(得分:0)
运行Java时,请不要在要运行的类名中包含“.java”。尝试
java Hello
从ls
输出,它甚至还没有编译。你当然必须先编译它。
javac Hello.java
修改强>
此问题的补充说明 已成功编译javac
。但现在正在运行命令java Hello.class
。不要在要运行的Java类名中包含“.class”(或前面的“.java”)。
解决方案仍然是:
java Hello
答案 3 :(得分:0)
使用javac编译器编译java程序。它与jdk捆绑在一起。你需要安装jdk然后像
一样编译它 javac Hello.java
它将生成一个类文件Hello.class,然后您可以将该类文件作为
运行java Hello