1

外部コンパイラを実行しようとしているmvnUnknownエラーを調査するにはどうすればよいですか?コンパイラプラグインのソースによると、この場合、javacはゼロ以外を返しますが、mvnはエラー情報を抽出できません(この状況では、alas mvnはjavacエラーコードを食べているように見えます)-JavacCompiler.Java。Mvnにjava7出力の解析に問題があることを知っており、javaを手動で実行しようとしましたが、エラーを再現できません。

私はmvn303、コンパイラプラグイン2.5.1、java1.707を使用しています。

  • mvn cleancompile-X-エラーで失敗します
  • コピーアンドペーストmvnの失敗した/bin/ shforjavac呼び出し-sh+javacはエラーコードなしで完了します

この状況に対処する方法について何かアイデアがあれば教えてください。

ありがとう

ピーター

`[ERROR] / bin / sh -c cd / myproj / modules / memory && /usr/java/jdk1.7.0_07/jre/../bin/javac @ / myproj / modules / memory / target / classes/org。 codehaus.plexus.compiler.javac.JavacCompiler4013958444740287519arguments -J-Xmx512m -J-Xms512m [ERROR]-> [Help 1] org.apache.maven.lifecycle.LifecycleExecutionException:ゴールorg.apache.maven.plugins:maven-の実行に失敗しましたコンパイラ-プラグイン:2.3.2:プロジェクトメモリでのコンパイル(デフォルト-コンパイル):org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217)atorg.apache.maven.lifecycleでのコンパイルで致命的なエラーが発生しました.internal.MojoExecutor.execute(MojoExecutor.java:153)......。

org.codehaus.plexus.compiler.javac.JavacCompiler.compileOutOfProcess(JavacCompiler.java:488)at org.codehaus.plexus.compiler.javac.JavacCompiler.compile(JavacCompiler.java:157) `

4

1 に答える 1

2

問題の原因が見つかりました-フォークのメモリがありません。バックグラウンドでJavaプロセスがあり、コンパイラプラグインをforkに設定しました。Mavenがフォークを試みたときに失敗し、エラーコードが発生しましたが、エラー情報はありません(少なくともプラグインが理解できる情報はありません)。

参考までに、JavaCompilerコードに改善を加えることができると思います。現在、メッセージのない障害は一般的なエラーステートメントを生成します。ただし、returnCodeがあり、これをテキストに追加して、この種のケースに遭遇したときに従うべきパンくずリストをさらにいくつか提供することができます。

        if ( ( returnCode != 0 ) && messages.isEmpty() )
                {
                    if ( err.getOutput().length() == 0 )
                    {
                        throw new CompilerException( "Unknown error trying to execute the external compiler: " + EOL
                            + cli.toString() );
                    }
                    else
                    {
                        messages.add( new CompilerError( "Failure executing javac,  but could not parse the error:" + EOL
                            + err.getOutput(), true ) );
                    }
                }
于 2012-09-19T21:34:52.133 に答える