2017-10-16 406 views
1

我正在尝试编写一个模拟程序,我希望能够运行模拟程序。 尝试$ mvn gatling时执行时出现错误。gatling负载测试期间编译错误

我POM具有以下依存关系:

<dependency> 
    <groupId>io.gatling</groupId> 
    <artifactId>gatling-charts</artifactId> 
    <version>2.2.5</version> 
</dependency> 
<dependency> 
    <groupId>io.gatling</groupId> 
    <artifactId>gatling-core</artifactId> 
    <version>2.2.5</version> 
</dependency> 

及以下插件:

<build> 
    <plugins> 
     <plugin> 
      <groupId>net.alchim31.maven</groupId> 
      <artifactId>scala-maven-plugin</artifactId> 
      <version>3.3.1</version> 
      <configuration> 
       <scalaVersion>2.12.3</scalaVersion> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>io.gatling</groupId> 
      <artifactId>gatling-maven-plugin</artifactId> 
      <version>2.2.4</version> 
      <executions> 
       <execution> 
        <id>performanceTests</id> 
        <goals> 
         <goal>execute</goal> 
        </goals> 
        <configuration> 
         <simulationClass>simulations.SimulationClass</simulationClass> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

这是我碰到的错误:

12:50:36.313 [main][WARN ][ZincCompiler.scala:141] i.g.c.ZincCompiler$ - 
Pruning sources from previous analysis, due to incompatible CompileSetup. 
java.lang.ClassNotFoundException: io.gatling.app.Gatling 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at io.gatling.mojo.MainWithArgsInFile.runMain(MainWithArgsInFile.java:42) 
    at io.gatling.mojo.MainWithArgsInFile.main(MainWithArgsInFile.java:33) 

包括依赖性:

<dependency> 
    <groupId>io.gatling</groupId> 
    <artifactId>gatling-app</artifactId> 
    <version>2.2.5</version> 
</dependency> 

但现在我得到一个新的错误:

java.lang.reflect.InvocationTargetException 
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 io.gatling.mojo.MainWithArgsInFile.runMain(MainWithArgsInFile.java:50) 
at io.gatling.mojo.MainWithArgsInFile.main(MainWithArgsInFile.java:33) 
Caused by: java.lang.NoSuchMethodError: scala.Product.$init$(Lscala/Product;)V 
at com.github.mnogu.gatling.mqtt.protocol.MqttProtocolOptionPart.<init>(MqttProtocol.scala:124) 
at com.github.mnogu.gatling.mqtt.protocol.MqttProtocol$.apply(MqttProtocol.scala:24) 
at com.github.mnogu.gatling.mqtt.protocol.MqttProtocolBuilder$.apply(MqttProtocolBuilder.scala:13) 
at com.github.mnogu.gatling.mqtt.Predef$.mqtt(Predef.scala:9) 
at simulations.SimulationClass.<init>(SimulationClass.scala:10) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:423) 
at java.lang.Class.newInstance(Class.java:442) 
at io.gatling.app.Runner.run0(Runner.scala:79) 
at io.gatling.app.Runner.run(Runner.scala:64) 
at io.gatling.app.Gatling$.start(Gatling.scala:59) 
at io.gatling.app.Gatling$.fromArgs(Gatling.scala:43) 
at io.gatling.app.Gatling$.main(Gatling.scala:35) 
at io.gatling.app.Gatling.main(Gatling.scala) 

...

任何有关这个问题的线索将有很大的帮助。

谢谢

回答

1

你的错误说你缺少以下依赖,

<!-- https://mvnrepository.com/artifact/io.gatling/gatling-app --> 
<dependency> 
    <groupId>io.gatling</groupId> 
    <artifactId>gatling-app</artifactId> 
    <version>2.2.5</version> 
</dependency> 

更新

你的第二个错误,主要是因为你的代码是指在运行时的jar文件与编译时使用的jar文件不同。因此,确保在编译和运行时使用相同的jar。为此,您可以删除相关的jar文件,maven清理您的项目并重新编译并运行该程序。

+0

包含的依赖,现在我看到另一个错误。 – aria

+0

最新的错误是什么?你能更新吗? –

+0

更新了帖子中的错误。 – aria

1

看起来像我使用的外部jar只符合gatling核心2.2.3。将gatling核心版本恢复到2.2.3和scala版本到2.11.8解决了这个问题。

这里是我的POM现在的样子:

<dependency> 
     <groupId>io.gatling.highcharts</groupId> 
     <artifactId>gatling-charts-highcharts</artifactId> 
     <version>2.2.3</version> 
    </dependency> 
    <dependency> 
     <groupId>io.gatling</groupId> 
     <artifactId>gatling-core</artifactId> 
     <version>2.2.3</version> 
    </dependency> 
    <dependency> 
     <groupId>io.gatling</groupId> 
     <artifactId>gatling-app</artifactId> 
     <version>2.2.3</version> 
    </dependency> 

<plugins> 
     <plugin> 
      <groupId>net.alchim31.maven</groupId> 
      <artifactId>scala-maven-plugin</artifactId> 
      <version>3.3.1</version> 
      <configuration> 
       <scalaVersion>2.11.8</scalaVersion> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>io.gatling</groupId> 
      <artifactId>gatling-maven-plugin</artifactId> 
      <version>2.2.3</version> 
      <executions> 
       <execution> 
        <id>performanceTests</id> 
        <goals> 
         <goal>execute</goal> 
        </goals> 
        <configuration> 
         <simulationClass>simulations.SimulationClass</simulationClass> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins>