diff --git a/plexus-compilers/plexus-compiler-javac/src/main/java/org/codehaus/plexus/compiler/javac/JavacCompiler.java b/plexus-compilers/plexus-compiler-javac/src/main/java/org/codehaus/plexus/compiler/javac/JavacCompiler.java index fd3fe684..a2c0ccc1 100644 --- a/plexus-compilers/plexus-compiler-javac/src/main/java/org/codehaus/plexus/compiler/javac/JavacCompiler.java +++ b/plexus-compilers/plexus-compiler-javac/src/main/java/org/codehaus/plexus/compiler/javac/JavacCompiler.java @@ -675,9 +675,17 @@ static List parseModernStream( int exitCode, BufferedReader inp { // javac output not detected by other parsing // maybe better to ignore only the summary an mark the rest as error - if (buffer.length() > 0 && buffer.toString().startsWith("javac:")) + String bufferAsString = buffer.toString(); + if ( buffer.length() > 0 ) { - errors.add( new CompilerMessage( buffer.toString(), CompilerMessage.Kind.ERROR ) ); + if ( bufferAsString.startsWith("javac:")) + { + errors.add( new CompilerMessage( bufferAsString, CompilerMessage.Kind.ERROR ) ); + } + else if ( bufferAsString.startsWith("Error occurred during initialization of boot layer")) + { + errors.add( new CompilerMessage( bufferAsString, CompilerMessage.Kind.OTHER ) ); + } } return errors; } diff --git a/plexus-compilers/plexus-compiler-javac/src/test/java/org/codehaus/plexus/compiler/javac/ErrorMessageParserTest.java b/plexus-compilers/plexus-compiler-javac/src/test/java/org/codehaus/plexus/compiler/javac/ErrorMessageParserTest.java index 676b98f0..fbfd05e4 100644 --- a/plexus-compilers/plexus-compiler-javac/src/test/java/org/codehaus/plexus/compiler/javac/ErrorMessageParserTest.java +++ b/plexus-compilers/plexus-compiler-javac/src/test/java/org/codehaus/plexus/compiler/javac/ErrorMessageParserTest.java @@ -894,6 +894,18 @@ public final void testIssue37() throws IOException { ".tools.javac.Main.main(Main.java:43)" + EOL)); } + public void testJvmError() throws Exception + { + String out = "Error occurred during initialization of boot layer" + EOL + + "java.lang.module.FindException: Module java.xml.bind not found"; + + List compilerErrors = JavacCompiler.parseModernStream( 1, new BufferedReader( new StringReader( out ) )); + + assertNotNull( compilerErrors ); + + assertEquals( 1, compilerErrors.size() ); + } + private static void assertEquivalent(CompilerMessage expected, CompilerMessage actual){ assertEquals("Message did not match", expected.getMessage(), actual.getMessage()); assertEquals("Kind did not match", expected.getKind(), actual.getKind());