How to see the compiler output when running javac through an Ant task?

前端 未结 5 511
一生所求
一生所求 2021-02-04 00:30

Is there any clearly explained and simple way to see the compiler output when running javac through an Ant task?

Here is my javac Ant tag:

相关标签:
5条回答
  • 2021-02-04 01:04

    I think you're looking for the verbose="true" attribute.

    Asks the compiler for verbose output; defaults to no.

    You already mentioned in the comments that this doesn't print the cause of your error. Well I think something else is going on in your situation. I have a sample project and either way the cause of my error was printed. Here's the output with 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
    

    Something strange and specific to your code is causing the bad error message. Can you create a sample project that reproduces the error?


    As you mentioned, debug="true" is not the attribute you're looking for.

    Indicates whether source should be compiled with debug information; defaults to off. If set to off, -g:none will be passed on the command line for compilers that support it (for other compilers, no command line argument will be used). If set to true, the value of the debuglevel attribute determines the command line argument.

    You know when you get stack trace and it has line numbers in it? That's what debug="true" does. If it's off, you don't get line numbers.

    0 讨论(0)
  • 2021-02-04 01:11

    The problem also occurs when the java-compiler itself cannot start. As an example, when the defined heap is too big. The java2 task of Intellij would display the information

    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.
    

    and the cause in the build.xml file, in my case:

    <property name="compiler.args" value="-J-Xmx1600m"/>
    
    0 讨论(0)
  • 2021-02-04 01:12

    Use this

    <javac srcdir="src" destdir="build/classes" debug="true">
                <classpath>
                    <path refid="classpath"/>
                </classpath>
    </javac>
    
    0 讨论(0)
  • 2021-02-04 01:23

    You should add the attribute debug

    <javac srcdir="${myproject.src}" destdir="${myproject.class}" debug="true>
        <!-- ... -->
    </javac>
    
    0 讨论(0)
  • 2021-02-04 01:23

    I was getting the same error message with no further information. The problem ended up being one of my .jar files was corrupted. Replacing that .jar file solved the problem.

    0 讨论(0)
提交回复
热议问题