我已经设法编译java程序但我无法执行它

时间:2010-01-25 15:37:30

标签: java class executable

我刚刚在Windows Vista上安装了JDK。之后,我为4个环境变量设置了正确的值:classpath,include,lib,path。之后,我能够编译我的HelloWorld程序(我有一个* .class文件)。但是当我尝试执行编译的程序(我输入java HelloWorldApp)时,它不起作用。 Java写了很多东西,最后写的是“无法找到主类:HelloWorldApp”。任何人,请求,帮助我解决这个问题?

6 个答案:

答案 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)

  1. 创建一个名为HelloWorld.java;
  2. 的文件
  3. 将下面发布的代码粘贴到HelloWorld.java
  4. 通过在HelloWorld.java所在的文件夹中执行命令javac HelloWorld.java来编译它;
  5. 通过在HelloWorld.java所在的文件夹中执行:java -cp . HelloWorld来执行代码。

  6. 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