当前位置: 首页 > 面试题库 >

ant javac任务使用哪个javac.exe?

葛念
2023-03-14
问题内容

我面临一个问题。我javac.exe在机器上重命名,并注意到antjavac任务仍然可以正常工作。

有人知道从哪里获取javac.exe吗?


问题答案:

实际上,我相信默认情况下,Ant会尝试直接使用以下代码执行Java编译器类:

try {
        Class c = Class.forName ("com.sun.tools.javac.Main");
        Object compiler = c.newInstance ();
        Method compile = c.getMethod ("compile",
            new Class [] {(new String [] {}).getClass ()});
        int result = ((Integer) compile.invoke
                      (compiler, new Object[] {cmd.getArguments()}))
            .intValue ();
        return (result == MODERN_COMPILER_SUCCESS);

    } catch (Exception ex) {
        if (ex instanceof BuildException) {
            throw (BuildException) ex;
        } else {
            throw new BuildException("Error starting modern compiler",
                                     ex, location);
        }
    }

代码来自这里 。

这意味着,如果库tools.jar位于Ant的当前类路径上,它将拾取该类并启动它。这导致javac.exe可以重命名为您想要的任何名称,它仍然可以工作。因此,要回答您的问题,它实际上不执行任何“ javac.exe”。



 类似资料:
  • 本文向大家介绍哪个命令专门用来查看后台任务?相关面试题,主要包含被问及哪个命令专门用来查看后台任务?时的应答技巧和注意事项,需要的朋友参考一下 答案: jobs

  • 我在用Gradle。我有两个任务:“A”和“B”。我想让任务“A”调用任务“B”。我怎么能这么做? 是否可以简单地从现有任务中调用另一个任务?

  • 问题内容: 我有一个Jenkins主服务器(在一个小的Linux机器上运行)和一个Jenkins从机(在“正确的” XP计算机上运行)。 我已经配置了所有要在Windows XP从属服务器上运行的副臂。 不幸的是,每次在该从属服务器上运行构建时,由于以下错误,构建都会失败: 我知道此错误是由于包含这些工件的存储库定义不正确造成的,因为已使用的存储库是在settings.xml中定义的。因此,我的问

  • ​ ​ 任务中心会收到路线规划下发任务等。

  • 我正在将一些用于iOS和OSX的Ant构建转换为Gradle。创建了以下内容: 这可能很简单,但我做错了什么?如何从自定义类中调用exec任务?

  • 8.2 使用异步任务 注意:本节所介绍的功能要求 vim 编译包括 +job 特性。 8.2.1 简单任务体验 前文说到,Vim 的异步任务主要是针对外部命令的。那我们就先以最简单最常见的系统命 令 ls 为例,其功能是列出当前目录下的文件,若在 Windows 操作系统下或可用 dir 命令代替。 首先请在 shell 中进入一个非空目录,便于实践,并在 shell 中执行如下命令: $ ls