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 等构建工具来构建您的项目。
我正在尝试从像 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 等构建工具来构建您的项目。