2017-09-20 18 views
2

注釈プロセッサを作成しようとしていますが、initメソッドが常にNULL ProcessingEnvironmentを渡しているようです。注釈プロセッサの経験はありませんが、これは不正な動作のようです。次のコードは次のとおりです。注釈プロセッサがNullPointerExceptionをスローする

@SupportedSourceVersion(SourceVersion.RELEASE_8) 
@SupportedAnnotationTypes("*") 
public class DocAnnotationProcessor extends AbstractProcessor { 

    @Override 
    public synchronized void init(ProcessingEnvironment processingEnvironment) { 
     super.init(processingEnvironment); 
    } 

    @Override 
    public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) { 
     processingEnv.getMessager().printMessage(javax.tools.Diagnostic.Kind.WARNING,"IT WORKS"); 
     return true; 
    } 
} 

およびスタックトレース:

[ERROR] Failed to execute goal org.bsc.maven:maven-processor-plugin:3.3.2:process (process) on project flowBot: Error executing: java.lang.NullPointerException -> [Help 1] 
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.bsc.maven:maven-processor-plugin:3.3.2:process (process) on project flowBot: Error executing 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116) 
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80) 
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) 
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128) 
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307) 
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193) 
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106) 
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863) 
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288) 
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:199) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) 
    at org.codehaus.classworlds.Launcher.main(Launcher.java:47) 
Caused by: org.apache.maven.plugin.MojoExecutionException: Error executing 
    at org.bsc.maven.plugin.processor.AbstractAnnotationProcessorMojo.execute(AbstractAnnotationProcessorMojo.java:429) 
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207) 
    ... 21 more 
Caused by: java.lang.RuntimeException: java.lang.NullPointerException 
    at com.sun.tools.javac.main.Main.compile(Main.java:553) 
    at com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:129) 
    at com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:138) 
    at org.bsc.maven.plugin.processor.AbstractAnnotationProcessorMojo.executeWithExceptionsHandled(AbstractAnnotationProcessorMojo.java:766) 
    at org.bsc.maven.plugin.processor.AbstractAnnotationProcessorMojo.execute(AbstractAnnotationProcessorMojo.java:421) 
    ... 23 more 
Caused by: java.lang.NullPointerException 
    at util.flowAnnotations.DocAnnotationProcessor.init(DocAnnotationProcessor.java:17) 
    at com.sun.tools.javac.processing.JavacProcessingEnvironment$ProcessorState.<init>(JavacProcessingEnvironment.java:500) 
    at com.sun.tools.javac.processing.JavacProcessingEnvironment$DiscoveredProcessors$ProcessorStateIterator.next(JavacProcessingEnvironment.java:597) 
    at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:690) 
    at com.sun.tools.javac.processing.JavacProcessingEnvironment.access$1800(JavacProcessingEnvironment.java:91) 
    at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1035) 
    at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1176) 
    at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1170) 
    at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:856) 
    at com.sun.tools.javac.main.Main.compile(Main.java:523) 
    ... 27 more 

注釈プロセッサを最小加工する必要がありますように私には思えます。何がうまくいかないの?

+0

どのバージョンのJDKを使用していますか? – Devstr

+0

また、Githubにプロジェクトを投稿できますか? – Devstr

+1

この例外が発生したとき、DocAnnotationProcessor.java:17に正確にどのようなコードがありましたか? – Devstr

答えて

0

このスレッドに追加するための研究のいくつかのビットは:ソースとターゲット-1.8と

likely bugはトラッカに係る3.3.1リリースで固定しました。 MojoExecutionExceptionは、提供したソースのコンパイル中にエラーが発生した場合に、処理中にプラグインによってスローされます。


plugin repository以上util.flowAnnotations.DocAnnotationProcessorの検索は、任意の結果に私を導くことができませんでしたし、私はあなたが/のミックスを使用し、Scalaのクラスを処理していると述べたcomment by youをお読みください。そのためにはCustomProcessorを使用してください。BaseAbstractProcessorクラスをオーバーライドして同様の実装を行ってから、スカラコードをAnnotationProcessorCompilerとして処理しています。

すでにthis commentに矛盾したノートに自分のsample processor.


に見えるように、今日のように同じことをretronym/annotation-processorのようなスタックが存在している、私はプラグインの意思を見つけることができることを、知って良いだろういくつかの進歩はあるでしょうcompatible with Java9.

関連する問題