我的 java 编译器有问题。
我的 java 项目的文件夹如下所示:
- 主文件夹
- 交付文件夹
- Box.java
- 工厂.java
- FragileBox.java
- Supplier.java
- 测试文件夹
- 测试.java
- Test2.java
- Test3.java
- Test4.java
- Test5.java
- DeliveryTest.java
- 交付文件夹
显然我还有 2 个包,一个交付包
和一个测试包
。这是一个学校项目,所以给出了测试包
,我们必须编写交付包
,并由测试包
进行测试。
DeliveryTest.java 如下所示:
import java.util.ArrayList;
import java.util.List;
import test.*;
import delivery.*;
public class DeliveryTest {
public static void main(String[] args) {
List<Test> tests = new ArrayList<Test>();
tests.add(new Test2());
tests.add(new Test3());
tests.add(new Test4());
tests.add(new Test5());
int level = 1;
for (Test test : tests) {
if (test.test()) {
++level;
}
}
System.out.println("Az elert szint: " + level);
}
}
我真的不想详细说明代码的工作和目的,我认为它与这里无关。
我的问题是,如果我将 DeliveryTest.java 编译为 javac DeliveryTest.java,它会创建类文件并成功编译,但是:第一次编译后,当创建所有类文件时,我会创建任何交付包
上的更改不会再次编译,只会编译测试包
,并且编译器完成编译后,它将返回,因为一切顺利。如果我从交付文件夹
中删除其中一个类文件,它甚至不会再次创建类文件。不过,测试包
在第一次编译后编译得很好,没有任何问题。
如何才能在第一次编译后编译交付包?
感谢您的帮助
最佳答案
Java 编译器不会四处寻找要编译的文件。如果从命令行调用它,最好使用为其文件夹中的所有 Java 文件命名的调用。假设主文件夹是您的工作目录,
javac DeliveryTest.java delivery/*.java test/*.java
如果您不更改测试包中的文件,则可能不必使用最后一个参数。
关于Java编译器在第一次编译后不会编译所有子文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33111802/