Java 使用 javac 编译的文件无法引用同一目录中的其他文件

Java file compile using javac unable to refer to other files in the same directory

我正在尝试从像 Eclipse 这样的 IDE 迁移到独立的 Java 环境,但是我在将多个文件绑定到一个项目中时遇到问题。

这是一些示例代码,其中两个文件都在同一目录中:

App.java

package com.example.main;

public class App {
    public static void main(String[] args) {
        Example.test();
    }
}

Example.java

package com.example.main;

public class Example {
    public static void test() {
        System.out.println("It's working");
    }
}

当 运行 App.java 在 IDE 中时,会打印 It's working 的预期输出,但是在执行 javac *.java 之后,文件似乎相互忽略.

这是编译后执行java App.java时出现的错误:

App.java:5: error: cannot find symbol
                Example.test();
                ^
  symbol:   variable Example
  location: class App
1 error
error: compilation failed

如何编译项目中的文件以便它们相互识别?

如果您 运行ning Java 11 及更高版本,java App.java 将仅编译 App.java

如果需要引用Example.java,首先需要将java两个文件编译到一个目录中。 让它命名为 'classes'。命令将是

javac -d classes *.java

之后,您可以通过

运行

java -cp classes com.example.main.App。请注意,应用程序没有 .class 后缀

当然,如果项目变大或需要其他依赖项,建议使用 Apache Maven or Gradle 等构建工具来构建您的项目。