24

有没有办法将 Java 源文件 ( *.java) 编译到不同的目录?

如果我的包文件结构是这样的:

Mathematics ->
  Formulas ->
    src ->
      // source files containing mathematical formulas...
    bin ->
      // class files containing mathematical formulas...
  Problems ->
    src ->
      // source files containing mathematical problems...
    bin ->
      // class files containing mathematical problems...

我想将源文件和类文件分开以保持文件夹井井有条,但目前我必须在每次编译后将所有类文件从src文件夹复制到文件夹中。bin

有没有办法通过将类文件编译到javac命令中的另一个文件夹来简化这个过程?

4

1 回答 1

43

是的,绝对 - 使用-d选项指定输出目录:

javac -d bin src/foo/bar/*.java

请注意,您指定的目录是输出结构的根目录;将自动创建相关的子目录以对应您的代码的包结构。

有关更多详细信息,请参阅javac 文档

在这种情况下,您需要发出一个javac命令来编译公式,而另一个命令来编译问题 - 在编译问题bin时可能使用公式目录作为类路径的一部分。

(请注意,您可能需要考虑使用单一源结构但使用不同的包。您还应该考虑使用 IDE 来向您隐藏其中的一些复杂性 - 最终手动完成所有这些操作会变得很烦人,即使它不是实际上很难。)

于 2013-08-25T17:46:15.770 回答