查找 Ant 使用的 Java 编译器



我们正在使用带有自己的SDK的产品。此 SDK 包含:

  • 它自己的 JRE 安装
  • 这是自己的蚂蚁安装
  • 一些用于构建内容的 Ant 脚本
  • 使用包含的脚本调用 Ant 的几个批处理脚本

现在,一些 Ant 脚本使用javac任务编译 Java 代码。现在我想找到用于此目的javac可执行文件。我已经检查了以下内容:

  • 批处理脚本临时将JAVA_HOME设置为包含的 JRE。整个过程无需安装另一个JDK即可工作。
  • 包含的 JRE 是 JRE,而不是 JDK。所以找不到javac.exe
  • SDK 中没有其他任何位置包含javac.exe
  • build.compiler似乎没有在 Ant 脚本中的任何位置设置。
  • forkexecutablecompiler属性不会在任何javac任务上设置。

我不知道去哪里看。还有什么其他可能性?如何找到使用的 Java 编译器可执行文件?

我现在省略了任何 Ant 片段或类似内容,因为它们非常复杂,而且我不能 100% 确定哪些部分是相关的。如果您想查看某个部分,请在评论中告诉我。

编辑

到目前为止,感谢罗伯特的新见解:

有几个taskdef.它们中的大多数都引用了jar中的一个类,实现了Task。它们都不导入任何与编译器相关的包。但是,也有作为库加载的ant-contrib:

<taskdef resource="net/sf/antcontrib/antlib.xml">
<classpath>
<pathelement location="${ant.home}/lib/ant-contrib.jar"/>
</classpath>
</taskdef>

我不熟悉这个库,但它似乎包含一些可以进行编译的任务。CompileWithWalls进口org.apache.tools.ant.taskdefs.Javac.但是 Ant 脚本中不会调用compilewithwalls目标。问题仍然存在:如果从这些库中使用编译器,它将如何绑定到默认javac任务?

我的一位同事终于解开了这个谜团。

我所知道的是,Ant 使用位于JAVA_HOME下的 JDK。然而,在错误的假设下,我使用 Ant 使用javac.exe进行编译。嗯,它没有。蚂蚁使用位于tools.jar中的sun.tools.javac.Main。那个 Jar 以及javac.exe只附带一个 JDK,但就我而言,它包含在产品 SDK 中并手动添加到 Ant 的类路径中。

延伸阅读: http://mindprod.com/jgloss/javacmain.html

相关内容

  • 没有找到相关文章

最新更新