我刚刚在Windows Vista上安装了JDK。之后,我为4个环境变量设置了正确的值:classpath,include,lib,path。之后,我能够编译我的HelloWorld程序(我有一个* .class文件)。但是当我尝试执行编译的程序(我输入java HelloWorldApp)时,它不起作用。 Java写了很多东西,最后写的是“无法找到主类:HelloWorldApp”。任何人,请求,帮助我解决这个问题?
答案 0 :(得分:5)
为了清楚起见;你说你在默认包中有一个类,就是你没有在Java文件中包含一个包说明符,你的类被称为HelloWorldApp
。编译时,你在当前目录中得到了一个类文件HelloWorldApp.class
。
假设上述情况属实,请尝试:
java -cp . HelloWorldApp
例如,以下内容适用于unix框:
$ echo 'class HelloWorldApp { public static void main(String []argv) { System.out.println("Hello World!"); } }' > HelloWorldApp.java
$ javac HelloWorldApp.java
$ java -cp . HelloWorldApp
Hello World!
当然,你应该缩进你的代码,而不是把整个东西推到一条线上; - )
编辑:回答评论:
通常,默认的类路径是运行时库和the current directory。但是,如果您设置了CLASSPATH
变量,那么这将覆盖默认值,您需要将类路径显式设置回其“默认值”。要验证是否设置了CLASSPATH
环境变量,您可以(再次假定为unix):
set | grep CLASSPATH
如果已设置,那么您需要在类路径中手动包含.
。
答案 1 :(得分:4)
HelloWorld.java
; HelloWorld.java
:javac HelloWorld.java
来编译它; java -cp . HelloWorld
来执行代码。public class HelloWorld {
public static void main(String[] args) {
System.out.println("HelloWorld works!");
}
}
类路径如何工作,可在此处阅读:http://en.wikipedia.org/wiki/Classpath_%28Java%29
答案 2 :(得分:0)
您是否在路径中加入了.
和..
?只是为了澄清。代表您当前的目录,而..代表您的父目录。您告诉java必须搜索当前目录和父目录以查找该类。也可以将它添加到类路径中。
答案 3 :(得分:0)
使用时会发生什么:
java -cp {path to directory with HelloWorldApp in it} HelloWorldApp
该路径应包含在CLASSPATH
环境变量中。这是导出到您的命令shell吗?您是否需要启动新的命令shell才能获得最新版本的CLASSPATH
?
答案 4 :(得分:0)
发布您的代码。我认为问题是你的主类没有正确定义。我前几天做了这件事。
public static void main(String[] args){
//code
}
答案 5 :(得分:0)
类路径概念和Java源代码与编译的字节代码之间的逻辑差异是非常难以正确的。
我强烈建议您熟悉Sun Java教程。相关部分是
http://java.sun.com/docs/books/tutorial/getStarted/cupojava/win32.html