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

问题描述 投票:0回答:6

我在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 目录添加到我的路径中。我想知道这重要吗?

java windows-7 javac
6个回答
14
投票

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

这会导致 javac 默默地不产生任何结果。

我在 Hello Word 程序和 Macintosh 编辑器中体验到了这种效果 - 使用 Cmd-S 可以保存,但不能使用 Ctrl-S 保存。我在学习了 20 年 Java 编程后才学到这一点。


4
投票

如果

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

2
投票

虽然我问的是包声明,但我可以告诉你正确的做法:

假设您有一个具有该源的 Java 类:

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

假设你的项目根目录是

C:\Projects\java_tut

您必须将源文件

HelloWorld.java
放入目录中

C:\Projects\java_tut\我的 est

然后,使用以下命令在

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.

说明:如果使用包(并且您始终应该为您的类使用包),您不能“坐在”该包中,而始终从包(文件夹)外部运行命令。


1
投票
在这种情况下,

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


0
投票

原因之一可能是。您还没有保存您的程序。在运行 javac 命令之前,请务必保存程序(如果您做了任何更改)。然后运行 javac 命令将生成 .class 文件。


0
投票

这对我有帮助,

原因之一可能是。您还没有保存您的程序。在运行 javac 命令之前,请务必保存程序(如果您做了任何更改)。然后运行 javac 命令将生成 .class 文件。

© www.soinside.com 2019 - 2024. All rights reserved.