23

javac通过Ant任务运行时,是否有任何解释清楚且简单的方法来查看编译器输出?

这是我的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 有一些相关的已回答问题,但没有一个能真正回答这个简单的问题:

4

5 回答 5

8

我认为您正在寻找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"这样。如果它关闭,您将不会获得行号。

于 2013-07-05T17:33:11.277 回答
1

当 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.

以及 build.xml 文件中的原因,在我的例子中:

<property name="compiler.args" value="-J-Xmx1600m"/>
于 2015-09-21T09:47:52.090 回答
0

用这个

<javac srcdir="src" destdir="build/classes" debug="true">
            <classpath>
                <path refid="classpath"/>
            </classpath>
</javac>
于 2013-07-05T18:07:56.363 回答
0

您应该添加属性调试

<javac srcdir="${myproject.src}" destdir="${myproject.class}" debug="true>
    <!-- ... -->
</javac>
于 2013-07-05T15:13:26.980 回答
0

我收到了相同的错误消息,但没有更多信息。问题最终是我的 .jar 文件之一已损坏。替换那个 .jar 文件解决了这个问题。

于 2016-06-30T19:47:27.760 回答