[ 
https://issues.apache.org/jira/browse/MCOMPILER-566?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Alexander Kriegisch updated MCOMPILER-566:
------------------------------------------
    Description: 
When analysing MCOMPILER-424, at some point I wanted to know what happens if I 
set {{fork=true}} or {{forceJavacCompilerUse=true}}. The result was bad: No 
matter if I compile with {{mvn -e -X}} or {{verbose=true}}, I only see a 
{{CompilationFailureException: Compilation failure}}. There seems to be no way 
to actually see the underlying root cause. I have to compile in process via 
Plexus {{JavaxToolsCompiler}} to see the {{AnnotationTypeMismatchException}} 
from [this 
comment|https://issues.apache.org/jira/browse/MCOMPILER-424?focusedCommentId=17797351&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-17797351].

It is not helpful to know _that_ compilation failed, but not _why_.

Intermediate result: I added some debug statements into 
{{org.codehaus.plexus.compiler.javac.JavacCompiler::compileOutOfProcess}}:

{code:java}
returnCode = CommandLineUtils.executeCommandLine(cli, out, out);
System.out.println("### plexus javac return code: " + returnCode);
System.out.println("### plexus javac output:\n" + out.getOutput());
messages = parseModernStream(returnCode, new BufferedReader(new 
StringReader(out.getOutput())));
System.out.println("### plexus javac messages: " + messages);
{code}

The Maven console log when running with the latest Maven Compiler and latest 
Plexus Compiler (sorry for interspersed German messages due to locale auto 
detection):

{code:none}
[INFO] Compiling 1 source file with javac [forked debug release 17] to 
target\classes
### plexus javac return code: 3
### plexus javac output:
Processor ran!
[org.example.MyFirstAnnotation]
[errorRaised=false, rootElements=[org.example.AnnotatedClass], 
processingOver=false]
Warnung: No SupportedSourceVersion annotation found on org.example.Processor, 
returning RELEASE_6.
Warnung: Unterst�tzte Quellversion "RELEASE_6" von Annotationsprozessor 
"org.example.Processor" kleiner als -source "17"
2 Warnungen


Ein Annotationsprozessor hat eine nicht abgefangene Ausnahme ausgel�st.
Details finden Sie im folgenden Stacktrace.
java.lang.annotation.AnnotationTypeMismatchException: Incorrectly typed data 
found for annotation element public abstract org.example.MySecondAnnotation 
org.example.MyFirstAnnotation.secondAnnotation() (Found data of type 
org.example.MySecondAnnotation)
        at 
jdk.compiler/com.sun.tools.javac.model.AnnotationProxyMaker$ValueVisitor$1AnnotationTypeMismatchExceptionProxy.generateException(AnnotationProxyMaker.java:271)
        at 
java.base/sun.reflect.annotation.AnnotationInvocationHandler.invoke(AnnotationInvocationHandler.java:89)
        at jdk.proxy3/jdk.proxy3.$Proxy3.secondAnnotation(Unknown Source)
        at org.example.Processor.process(Processor.java:23)
        at 
jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:1021)
        at 
jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:937)
        at 
jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1265)
        at 
jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1380)
        at 
jdk.compiler/com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1271)
        at 
jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:948)
        at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:319)
        at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:178)
        at jdk.compiler/com.sun.tools.javac.Main.compile(Main.java:64)
        at jdk.compiler/com.sun.tools.javac.Main.main(Main.java:50)
{code}

As you can see, Plexus {{JavacCompiler}} gets all the output from _javac_, but 
then somehow discards it while parsing it in 
{{JavacCompiler::parseModernStream}}. I have not debugged into that part yet, 
but it looks like a Plexus Compiler Javac bug. Do I need to create a separate 
issue in that project, or are we dealing with the same players here?

BTW, this...

{code:none}
Ein Annotationsprozessor hat eine nicht abgefangene Ausnahme ausgelöst.
Details finden Sie im folgenden Stacktrace.
{code}

translates to:

{code:none}
An annotation processor threw an uncaught exception.
Consult the following stack trace for details.
{code}


  was:
When analysing MCOMPILER-424, at some point I wanted to know what happens if I 
set {{fork=true}} or {{forceJavacCompilerUse=true}}. The result was bad: No 
matter if I compile with {{mvn -e -X}} or {{verbose=true}}, I only see a 
{{CompilationFailureException: Compilation failure}}. There seems to be no way 
to actually see the underlying root cause. I have to compile in process via 
Plexus {{JavaxToolsCompiler}} to see the {{AnnotationTypeMismatchException}} 
from [this 
comment|https://issues.apache.org/jira/browse/MCOMPILER-424?focusedCommentId=17797351&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-17797351].

It is not helpful to know _that_ compilation failed, but not _why_.

Intermediate result: I added some debug statements into 
{{org.codehaus.plexus.compiler.javac.JavacCompiler::compileOutOfProcess}}:

{code:java}
returnCode = CommandLineUtils.executeCommandLine(cli, out, out);
System.out.println("### plexus javac return code: " + returnCode);
System.out.println("### plexus javac output:\n" + out.getOutput());
messages = parseModernStream(returnCode, new BufferedReader(new 
StringReader(out.getOutput())));
System.out.println("### plexus javac messages: " + messages);
{code}

The Maven console log when running with the latest Maven Compiler and latest 
Plexus Compiler (sorry for interspersed German messages due to locale auto 
detection):

{code:none}
[INFO] Compiling 1 source file with javac [forked debug release 17] to 
target\classes
### plexus javac return code: 3
### plexus javac output:
Processor ran!
[org.example.MyFirstAnnotation]
[errorRaised=false, rootElements=[org.example.AnnotatedClass], 
processingOver=false]
Warnung: No SupportedSourceVersion annotation found on org.example.Processor, 
returning RELEASE_6.
Warnung: Unterst�tzte Quellversion "RELEASE_6" von Annotationsprozessor 
"org.example.Processor" kleiner als -source "17"
2 Warnungen


Ein Annotationsprozessor hat eine nicht abgefangene Ausnahme ausgel�st.
Details finden Sie im folgenden Stacktrace.
java.lang.annotation.AnnotationTypeMismatchException: Incorrectly typed data 
found for annotation element public abstract org.example.MySecondAnnotation 
org.example.MyFirstAnnotation.secondAnnotation() (Found data of type 
org.example.MySecondAnnotation)
        at 
jdk.compiler/com.sun.tools.javac.model.AnnotationProxyMaker$ValueVisitor$1AnnotationTypeMismatchExceptionProxy.generateException(AnnotationProxyMaker.java:271)
        at 
java.base/sun.reflect.annotation.AnnotationInvocationHandler.invoke(AnnotationInvocationHandler.java:89)
        at jdk.proxy3/jdk.proxy3.$Proxy3.secondAnnotation(Unknown Source)
        at org.example.Processor.process(Processor.java:23)
        at 
jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:1021)
        at 
jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:937)
        at 
jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1265)
        at 
jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1380)
        at 
jdk.compiler/com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1271)
        at 
jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:948)
        at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:319)
        at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:178)
        at jdk.compiler/com.sun.tools.javac.Main.compile(Main.java:64)
        at jdk.compiler/com.sun.tools.javac.Main.main(Main.java:50)
{code}

As you can see, Plexus {{JavacCompiler}} gets all the output from _javac_, but 
then somehow discards it while parsing it in 
{{JavacCompiler::parseModernStream}}. I have not debugged into that part yet, 
but it looks like a Plexus Compiler Javac bug. Do I need to create a separate 
issue in that project, or are we dealing with the same players here?


> Display forked compiler stacktrace on error
> -------------------------------------------
>
>                 Key: MCOMPILER-566
>                 URL: https://issues.apache.org/jira/browse/MCOMPILER-566
>             Project: Maven Compiler Plugin
>          Issue Type: Improvement
>    Affects Versions: 3.11.0, 3.12.0
>            Reporter: Alexander Kriegisch
>            Priority: Major
>
> When analysing MCOMPILER-424, at some point I wanted to know what happens if 
> I set {{fork=true}} or {{forceJavacCompilerUse=true}}. The result was bad: No 
> matter if I compile with {{mvn -e -X}} or {{verbose=true}}, I only see a 
> {{CompilationFailureException: Compilation failure}}. There seems to be no 
> way to actually see the underlying root cause. I have to compile in process 
> via Plexus {{JavaxToolsCompiler}} to see the 
> {{AnnotationTypeMismatchException}} from [this 
> comment|https://issues.apache.org/jira/browse/MCOMPILER-424?focusedCommentId=17797351&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-17797351].
> It is not helpful to know _that_ compilation failed, but not _why_.
> Intermediate result: I added some debug statements into 
> {{org.codehaus.plexus.compiler.javac.JavacCompiler::compileOutOfProcess}}:
> {code:java}
> returnCode = CommandLineUtils.executeCommandLine(cli, out, out);
> System.out.println("### plexus javac return code: " + returnCode);
> System.out.println("### plexus javac output:\n" + out.getOutput());
> messages = parseModernStream(returnCode, new BufferedReader(new 
> StringReader(out.getOutput())));
> System.out.println("### plexus javac messages: " + messages);
> {code}
> The Maven console log when running with the latest Maven Compiler and latest 
> Plexus Compiler (sorry for interspersed German messages due to locale auto 
> detection):
> {code:none}
> [INFO] Compiling 1 source file with javac [forked debug release 17] to 
> target\classes
> ### plexus javac return code: 3
> ### plexus javac output:
> Processor ran!
> [org.example.MyFirstAnnotation]
> [errorRaised=false, rootElements=[org.example.AnnotatedClass], 
> processingOver=false]
> Warnung: No SupportedSourceVersion annotation found on org.example.Processor, 
> returning RELEASE_6.
> Warnung: Unterst�tzte Quellversion "RELEASE_6" von Annotationsprozessor 
> "org.example.Processor" kleiner als -source "17"
> 2 Warnungen
> Ein Annotationsprozessor hat eine nicht abgefangene Ausnahme ausgel�st.
> Details finden Sie im folgenden Stacktrace.
> java.lang.annotation.AnnotationTypeMismatchException: Incorrectly typed data 
> found for annotation element public abstract org.example.MySecondAnnotation 
> org.example.MyFirstAnnotation.secondAnnotation() (Found data of type 
> org.example.MySecondAnnotation)
>       at 
> jdk.compiler/com.sun.tools.javac.model.AnnotationProxyMaker$ValueVisitor$1AnnotationTypeMismatchExceptionProxy.generateException(AnnotationProxyMaker.java:271)
>       at 
> java.base/sun.reflect.annotation.AnnotationInvocationHandler.invoke(AnnotationInvocationHandler.java:89)
>       at jdk.proxy3/jdk.proxy3.$Proxy3.secondAnnotation(Unknown Source)
>       at org.example.Processor.process(Processor.java:23)
>       at 
> jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:1021)
>       at 
> jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:937)
>       at 
> jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1265)
>       at 
> jdk.compiler/com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1380)
>       at 
> jdk.compiler/com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1271)
>       at 
> jdk.compiler/com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:948)
>       at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:319)
>       at jdk.compiler/com.sun.tools.javac.main.Main.compile(Main.java:178)
>       at jdk.compiler/com.sun.tools.javac.Main.compile(Main.java:64)
>       at jdk.compiler/com.sun.tools.javac.Main.main(Main.java:50)
> {code}
> As you can see, Plexus {{JavacCompiler}} gets all the output from _javac_, 
> but then somehow discards it while parsing it in 
> {{JavacCompiler::parseModernStream}}. I have not debugged into that part yet, 
> but it looks like a Plexus Compiler Javac bug. Do I need to create a separate 
> issue in that project, or are we dealing with the same players here?
> BTW, this...
> {code:none}
> Ein Annotationsprozessor hat eine nicht abgefangene Ausnahme ausgelöst.
> Details finden Sie im folgenden Stacktrace.
> {code}
> translates to:
> {code:none}
> An annotation processor threw an uncaught exception.
> Consult the following stack trace for details.
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to