第一次编译后,Java编译器不会编译所有子文件夹

时间:2015-10-13 20:14:25

标签: java

我的java编译器有问题 我的java项目的文件夹如下所示:

  • 主文件夹
    • 送货文件夹
      • Box.java
      • Factory.java
      • FragileBox.java
      • Supplier.java
    • 测试文件夹
      • Test.java
      • Test2.java
      • Test3.java
      • Test4.java
      • Test5.java
    • DeliveryTest.java

显然我还有2个包,delivery packagetest package。这是一个学校项目,所以test package已经给出,我们必须编写由delivery package测试的test package

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,它会创建类文件并成功编译,但是:在第一次编译之后,当创建所有类文件时,我对{{1}进行了任何更改它不会再次编译,只会编译delivery package,并且在编译器完成编译后,它将返回,因为一切顺利。如果我从test package中删除其中一个类文件,它甚至不会再次创建类文件。但是,delivery folder在第一次编译后编译正常,它没有问题 我怎样才能实现,我可以在第一次编译后编译 delivery 包?

感谢您的帮助

1 个答案:

答案 0 :(得分:2)

Java编译器不会查看要编译的文件。如果从命令行调用它,最好使用命名其文件夹中所有Java文件的调用。假设主文件夹是您的工作目录,

javac DeliveryTest.java delivery/*.java test/*.java

如果您不更改测试包中的文件,则可能不必使用最后一个参数。