通过Ant任务运行javac时如何查看编译器输出?

2022-09-01 23:52:27

在运行 Ant 任务时,是否有任何明确解释的简单方法来查看编译器输出?javac

这是我的蚂蚁标签:javac

<javac srcdir="${myproject.src}" destdir="${myproject.class}">
    <!-- ... -->
</javac>

这是我收到的唯一错误消息:

/path/to/build.xml:42: Compile failed; see the compiler error output for details.

问题是我不知道如何查看编译器错误输出的详细信息...


可能会有所帮助的几个配置元素:

  • 蚂蚁 1.6.5
  • 视窗 7 x64
  • Java 1.6.0_20 x32
  • 通过 Eclipse 启动目标

我知道SO上有一些相关的回答问题,但没有一个真正回答这个简单的问题:


答案 1

我认为您正在寻找属性。verbose="true"

要求编译器提供详细输出;默认为否。

您已经在评论中提到,这不会打印错误的原因。好吧,我认为在你的处境中还有其他事情正在发生。我有一个示例项目,无论哪种方式,我的错误原因都被打印出来了。下面是以下输出:verbose="false"

[mkdir] Created dir: C:\Projects\MavenSandbox\target\classes
[javac] C:\Projects\MavenSandbox\mavensandbox.xml:284: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
[javac] Compiling 3 source files to C:\Projects\MavenSandbox\target\classes
[javac] C:\Projects\MavenSandbox\src\main\java\com\sandbox\Sandbox.java:8: error: cannot find symbol
[javac]         System.out.prinln("Hello, I\'m the best!");
[javac]                   ^
[javac]   symbol:   method prinln(String)
[javac]   location: variable out of type PrintStream
[javac] 1 error

一些奇怪的和特定于您的代码的东西导致了错误的错误消息。能否创建重现错误的示例项目?


正如你所提到的,不是你要找的属性。debug="true"

指示是否应使用调试信息编译源;默认为关闭。如果设置为 off,则对于支持它的编译器,-g:none 将在命令行上传递(对于其他编译器,将不使用命令行参数)。如果设置为 true,则 debuglevel 属性的值确定命令行参数。

你知道当你得到堆栈跟踪,它有行号吗?这就是它的作用。如果它关闭,则您不会获得行号。debug="true"


答案 2

当 java 编译器本身无法启动时,也会发生此问题。例如,当定义的堆太大时。Intellij 的 java2 任务将显示信息

Using external javac compiler
Compilation arguments:
...
'-J-Xmx1600m'
...
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

以及构建.xml文件中的原因,在我的情况下:

<property name="compiler.args" value="-J-Xmx1600m"/>

推荐