2015-10-13 62 views
0

我对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,它会创建类文件并成功编译,但是:在第一次编译之后,当创建的所有类文件在delivery package上进行任何更改时,它都不会编译再次,只有test package,并且在编译器完成编译之后,它会随着一切顺利而返回。如果我从delivery folder中删除一个类文件,它甚至不会再创建类文件。但是,test package在第一次编译后编译就没有问题了。
我怎样才能达到我可以编译交付包以及第一次编译后?

感谢所有帮助

+5

我建议你使用像maven或gradle和IDE的构建工具。这样您就可以编辑代码并按下“运行”按钮来运行最新版本的代码。另外'调试'调试它等 –

回答

2

Java编译器不东张西望的文件进行编译。如果从命令行调用它,最好使用一个名称为文件夹中所有Java文件的调用。假设主文件夹是您的工作目录,

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

如果你不改变在测试包中的文件,你可能没有使用最后一个参数。

+0

好的,非常感谢你为我清理这个。祝你今天愉快。 – Krisztian