【问题标题】:Compile source file to a different directory?将源文件编译到不同的目录?
【发布时间】:2013-08-25 17:45:10
【问题描述】:

有没有办法将 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 命令中的另一个文件夹来简化此过程?

【问题讨论】:

  • 你想要什么目录bin

标签: java directory-structure


【解决方案1】:

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

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

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

有关详细信息,请参阅javac documentation

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

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

【讨论】:

  • 如何将整个 src 文件夹编译到 bin 中?
  • @Rushikesh:我通常建议使用可以为您完成此任务的构建工具,例如蚂蚁或 Maven。您可以只使用javac -d bin $(find src -name '*.java'),但如果文件太多,可能会遇到问题。
  • @JonSkeet 括号中的命令是否允许类文件遵循源文件的层次结构?喜欢com/github/johndoe/Main.java 会出现在bin/com/github/johndoe/Main.class 中吗?
  • @AritroShome:不,-d bin 部分将确保它在 bin/com/github/johndoe/Main.class
  • @JonSkeet 这就是我的意思,我想我漏掉了bin 部分!谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-02
  • 2021-05-10
  • 2022-11-01
  • 1970-01-01
相关资源
最近更新 更多