2014-01-12 3 views
0

저는 Maven에서 Caliper를 사용하려고하는데, 아직 캘리퍼스 벤치 마크 테스트를 성공적으로 수행하지 못했습니다.exec-maven-plugin을 사용한 캘리퍼 테스트에서 main 메소드 서명이 유효하지 않습니다.

캘리퍼스 버전 : 1.0 베타 1

내 벤치 마크 :

public class MyXercesSAXHandlerBenchmark extends Benchmark{ 

    @Param({"10", "100", "1000", "10000"}) private int length; 


    public void timeNanoTime(int reps) { 
     for (int i = 0; i < reps; i++) { 
      System.nanoTime(); 
     } 
    } 

    public static void main(String[] args) { 
     CaliperMain.main(MyXercesSAXHandlerBenchmark.class, args); 
    } 
} 

내 받는다는의 pom.xml이 있습니다

<profiles> 
    <profile> 
     <id>benchmarks</id> 
     <build> 
      <plugins> 
       <plugin> 
        <groupId>org.codehaus.mojo</groupId> 
        <artifactId>exec-maven-plugin</artifactId> 
        <version>1.1</version> 
        <executions> 
         <execution> 
          <id>caliper</id> 
          <phase>compile</phase> 
          <goals> 
           <goal>java</goal> 
          </goals> 
          <configuration> 
           <classpathScope>test</classpathScope> 
           <mainClass>my.path.to.benchmark.MyXercesSAXHandlerBenchmark</mainClass> 
           <arguments> 


           </arguments> 
          </configuration> 
         </execution> 
        </executions> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 
</profiles> 

나는 달렸다 :

MVN 새로 설치 mvn 컴파일 -P 벤치 마크 -e -X

Caused by: org.apache.maven.plugin.MojoExecutionException: An exception occured while executing the Java class. The specified mainClass doesn't contain a main method with appropriate signature. 
    at org.codehaus.mojo.exec.ExecJavaMojo.execute(ExecJavaMojo.java:345) 
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) 
    ... 19 more 
Caused by: java.lang.Exception: The specified mainClass doesn't contain a main method with appropriate signature. 
    at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:294) 
    at java.lang.Thread.run(Thread.java:680) 
Caused by: java.lang.NoSuchMethodException: com.google.caliper.runner.CaliperMain.main([Ljava.lang.String;) 
    at java.lang.Class.getMethod(Class.java:1632) 
    at org.codehaus.mojo.exec.ExecJavaMojo$1.run(ExecJavaMojo.java:283) 
    ... 1 more 
+0

Maven에서 ' com.google.caliper.runner.CaliperMain'을 정의했지만 'MyXercesSAXHandlerBenchmark' 내부에 기본 메소드를 게시 하시겠습니까?! –

+0

메인 클래스를 메인 클래스로 변경했는데 다음과 같이 나타납니다 :'Caused by : java.lang.ClassNotFoundException :' – Blankman

+0

그에 따라 게시물을 업데이트 할 수 있습니까? –

답변

0

maven-exec-plugin1.0-beta-1과 작동하지 않습니다. 6d05814727e8b119651247952dedf4ab321d890a - HEAD보다 늦은 버전에서 캘리퍼스를 제작해야합니다. 물론 작동합니다.

+0

그래서 수정본 6d058을 빌드하고 참조했지만, 여전히 java.lang.IllegalStateException : 필요한 allocinstrumenter agent jar를 찾을 수 없습니다.라는 오류가 표시됩니다. – Blankman

+0

Caliper가 클래스 경로에서 https://code.google.com/p/java-allocation-instrumenter/을 찾을 수없는 경우에 발생합니다. Caliper의 전이 의존성이므로 자동으로 가져야합니다. 클래스 패스 관리에서 무슨 일이 일어나고 있는지 모르겠다. 종속성 관리 문제를 해결할 수없는 경우 -Cinstrument.allocation.options.allocationAgentJar =/path/to/the.jar 플래그를 사용하여 수동으로 설정할 수 있습니다. – gk5885