【问题标题】:Cannot find output .class files using javac?使用 javac 找不到输出 .class 文件?
【发布时间】:2014-03-28 07:52:26
【问题描述】:

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

【问题讨论】:

  • 我跑了javac HelloWorld.java,并没有输出文件(因此,这个问题)。
  • HelloWorld的包声明是什么?
  • @Seelenvirtuose 我正在编写我的第一个程序,伙计。我不知道那是什么。您能告诉我如何查找您想要的信息吗?
  • 或许您应该向我们展示 Java 源文件。

标签: java windows-7 javac


【解决方案1】:

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

假设您有一个带有该源的 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\my\test

然后你在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.

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

【讨论】:

  • 如果这真的是问题所在,那么javac 也应该失败了?
  • 是的,你是对的。我还假设他遇到了编译错误。我想展示的是正确的方法,初学者应该遵循。通过这个过程,他应该得到一个工作程序(和预期的输出),不管他以前遇到什么问题。
【解决方案2】:

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

这会导致 javac 默默地不产生任何东西。

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

【讨论】:

  • 无法想象我得到了这个 10 分钟。我的正在保存到另一个位置并继续尝试构建原始文件。不管怎么说,还是要谢谢你。不过我的只有 2 年。
【解决方案3】:

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

编辑(基于您的 cmets 和编辑):

检查您的 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

【讨论】:

    【解决方案4】:

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

    【讨论】:

    • 在这种情况下,您应该看到以下编译器错误消息:“[515]% javac HelloWorld.java HelloWorld.java:1: 错误:类 YourClassName 是公共的,应在名为 YourClassName 的文件中声明.java"
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-19
    • 1970-01-01
    • 1970-01-01
    • 2011-02-11
    相关资源
    最近更新 更多