gpt4 book ai didi

java - 查找 Ant 使用的 Java 编译器

转载 作者:行者123 更新时间:2023-11-30 06:20:25 25 4
gpt4 key购买 nike

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

  • 它自己的 JRE 安装
  • 它自己的 Ant 安装
  • 一些用于构建内容的 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 导入 o​​rg.apache.tools.ant.taskdefs.Javac。但 Ant 脚本中未调用 compilewithwalls 目标。问题仍然存在:如果从任何这些库中使用编译器,它将如何绑定(bind)到默认 javac 任务?

最佳答案

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

我所知道的是,Ant 使用位于 JAVA_HOME 下的 JDK。然而,我错误地假设 Ant 使用 javac.exe 进行编译。嗯,事实并非如此。 Ant 使用位于 tools.jar 中的 sun.tools.javac.Main。该 Jar 以及 javac.exe 仅附带 JDK,但在我的例子中,它包含在产品 SDK 中并手动添加到 Ant 的类路径中。

进一步阅读:http://mindprod.com/jgloss/javacmain.html

关于java - 查找 Ant 使用的 Java 编译器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48263337/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com