2014-05-14 34 views
2

我創建了JMH主頁中指定的maven原型項目。 當我做生成項目的maven構建時,我得到「Annotation generator had throw the exception。java.lang.NullPointerException」 。 我的java文件是JMH AnnotationProcessor NullPointerException

public class MyBenchMark 
    // extends Benchmark 
{ 
    @GenerateMicroBenchmark 
    public void timeMyOperation(int reps) { 
     for (int i = 0; i < reps; i++) { 
      // ConcurrentHashMapTest.populateConcurrenctHashMap(); 
     } 
    } 

    public static void main(String args[]) throws RunnerException { 
     MyBenchMark myBenchMark = new MyBenchMark(); 
    // myBenchMark.timeMyOperation(50); 


     Options opt = new OptionsBuilder() 
       .include(".*" + MyBenchMark.class.getSimpleName() + ".*") 
       .forks(1) 
       .build(); 

     new Runner(opt).run(); 
    } 

} 

`。 我得到的例外是

org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.0:compile (default-compile) on project perftest: Compilation failure 
error: Annotation generator had thrown the exception. java.lang.NullPointerException 

    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:213) 
    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:84) 
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) 
    at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) 
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) 
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320) 
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) 
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) 
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) 
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) 
    at org.codehaus.classworlds.Launcher.main(Launcher.java:47) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
    at java.lang.reflect.Method.invoke(Method.java:597) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120) 
Caused by: org.apache.maven.plugin.compiler.CompilationFailureException: Compilation failure 
error: Annotation generator had thrown the exception. java.lang.NullPointerException 

    at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:745) 
    at org.apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.java:118) 
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) 
    ... 25 more 

回答

0

int reps是什麼車次江鈴控股。根據GenerateMicroBenchmark Javadoc: 「論據應該是零州或更多國家承認的類別,請參閱狀態文件的確切合同。」從參數中刪除int reps,它應該沒問題。順便說一句,你對你的基準測試做的是有問題的,請先閱讀JMH samples

錯誤信息應該會更好,正在處理此問題。

+0

非常感謝。那麼有效。一定要找出基準測試的正確用法。 – sivaramtechfan