使用javac找不到输出.class文件?

时间:2014-03-28 07:52:27

标签: java windows-7 javac

我在win 7的cmd处输入javac helloworld.java

C:\Users\User\Downloads\java_tut>javac HelloWorld.java

C:\Users\User\Downloads\java_tut>dir *.class

 Directory of C:\Users\User\Downloads\java_tut

03/28/2014  05:42 PM               429 YourClassName.class

C:\Users\User\Downloads\java_tut>

我在以下目录中搜索了helloworld.class: java,jre,jdk,java_tut,jre / bin,jdk / bin,以及我的整个硬盘。

我确实需要手动将/ jdk / bin目录添加到我的路径中。我想知道这是否重要?

4 个答案:

答案 0 :(得分:2)

如果HelloWorld.java编译没有任何错误,那么文件HelloWorld.class肯定应该在java_tut目录中。

编辑(根据您的评论和修改):

检查您的Java源文件HelloWorld.java是否如下所示:

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

该类必须与Java源文件具有相同的名称,否则您将收到以下编译器错误消息:

[515]% javac HelloWorld.java 
HelloWorld.java:1: error: class YourClassName is public, should be declared in a file named YourClassName.java
public class YourClassName {
   ^
1 error

答案 1 :(得分:2)

另一个可能的原因是空的 .java 源文件。

这会导致 javac 无声地产生任何内容。

我使用Hello Word程序和Macintosh编辑器体验了这种效果 - 使用 Cmd-S 保存,但不使用 Ctrl-S 保存。经过20年的Java编程,我学到了这一点。

答案 2 :(得分:1)

虽然我询问了包装声明,但我可以告诉你正确的方法:

假设你有一个带有该源的Java类:

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

假设您的项目根目录是

  

C:\项目\ java_tut

您必须将源文件HelloWorld.java放入目录

  

C:\项目\ java_tut \我\测试

然后使用以下命令在java_tut目录中编译并启动这个小程序:

C:\Projects\java_tut> javac my/test/HelloWorld.java

C:\Projects\java_tut> dir my\test
[...]
28.03.2014  09:35    <DIR>          .
28.03.2014  09:35    <DIR>          ..
28.03.2014  09:35               434 HelloWorld.class
28.03.2014  09:34               134 HelloWorld.java
[...]

C:\Projects\java_tut> java my.test.HelloWorld
Hello World.

说明:如果使用包(并且你总是应该为你的类使用包),你一定不能&#34;坐着&#34;在该包中,但始终从包(文件夹)外部运行命令。

答案 3 :(得分:0)

在这种情况下,

YourClassName.class是正确的文件。类名不是基于.java文件的名称生成的。它是根据.java文件中的类名生成的。在我的.java文件中,我将类命名为YourClassName而不是HelloWorld