2010-10-27 231 views
1

我试图从命令行运行java程序。我试着按照here提到的步骤操作。但是当我尝试运行javac Hello.java时,它抛出的错误是这样的程序不存在。我试图给java Hello.java并得到了错误:从命令行运行Java程序

Exception in thread "main" java.lang.NoClassDefFoundError: Hello/java 
Caused by: java.lang.ClassNotFoundException: Hello.java 
     at java.net.URLClassLoader$1.run(Unknown Source) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
Could not find the main class: Hello.java. Program will exit. 

这里有什么问题。我该怎么做?

编辑:我在我的代码文件Hello.java中有很多类。会导致任何问题吗?

+0

您使用的是软件包吗?你看到Hello.class了吗? – codaddict 2010-10-27 15:13:05

回答

5

运行,你需要做的程序:

java Hello 

这是java后跟类名没有扩展

+0

我仍然收到上面粘贴的“ClassNotFoundException”。我的代码在eclipse中运行良好。 – devnull 2010-10-27 15:09:37

+0

或者,根据你的环境,“java -classpath.Hello” – 2010-10-27 15:10:24

+0

你可以编辑你的问题来清楚地说明,在运行你用'java Hello'编程时它仍然不起作用吗?你可以把运行'java Hello'时得到的堆栈跟踪? – Guillaume 2010-10-27 15:17:19

6

首先,你应该编译

javac Hello.java 

Java代码然后运行它

java Hello 

在这两种情况下,请确保您的类路径设置正确......

+0

我在哪里可以找到javac。它不在jre /../ bin – devnull 2010-10-27 15:13:26

+0

javac在JDK – 2010-10-27 15:14:48

+0

http://www.oracle.com/technetwork/java/javase/downloads/index.html - JRE将能够“运行” ,JDK能够编译。 – Matthieu 2010-10-27 15:19:50

1

正如声明其他人回答,首先,您必须使用java Hello运行您的应用程序,而不是java Hello.java

其次,你必须检查你的CLASSPATH是否设置正确。看来你的变量未设置或不整合当前目录,即.

这样跑:

javac -classpath . Hello.java 
java -classpath Hello 

set CLASSPATH=. 
javac Hello.java 
java Hello 

当然,定义CLASSPATH作为用户/系统变量在你的Windows系统中是一个更好的解决方案!

1

如果Hello.java包含在包中,您将不得不创建合适的目录结构。即如果Hello.java包含在包com.stackoverflow中,则必须创建文件夹com/stackoverflow并将Hello.java放在此文件夹中。从根文件夹则必须启动

java com.stackoverflow.Hello

3

首先,Java要求每个文件最多一个公共类。没有

public class this { 
} 

public class that { 
} 

你可以有

class this { 
    class that { 
    } 
} 

,如果你需要。

编辑或在文件中。java:

public class this { 
} 

class that { 
} 

javac将不会在jre文件夹中。你有没有安装jdk?它在许多计算机上都不会默认出现。它通常位于“C:\ Program Files \ Java \ jdk1.6.0_05 \ bin \ javac.exe”或类似的路径中。

+0

安装jdk之后,我可以运行javac Hello.java,然后运行java Hello。它运行正常,虽然我有多个(非嵌套)类。 – devnull 2010-10-27 15:33:11

+0

这是正确的 - 编辑帖子。只有一个公共类,它必须与文件具有相同的名称。 – 2010-10-27 17:43:49

+0

此外,eclipse的javac位于不同的位置,而在IBM RAD(基于eclipse)中,它不在PATH环境变量中。我不确切知道它会在哪里。对困惑感到抱歉。 – 2010-10-27 17:51:37