【问题标题】:NoClassDefFoundError while running .jmx command line using lazerycode jmeter plugin使用 lazerycode jmeter 插件运行 .jmx 命令行时出现 NoClassDefFoundError
【发布时间】:2018-07-22 04:20:16
【问题描述】:

我正在使用lazerycode jmeter maven plugin 来执行我的 jmeter 测试。

当我尝试从 UI 运行我的 jmx 文件时,它运行得非常好。

但是,当我尝试使用 mvn 时,

mvn clean install or mvn verify

它开始执行,但在我使用 JSON 提取器从响应中提取一些值时失败。以下是我得到的错误,

[INFO] Uncaught Exception java.lang.NoClassDefFoundError: com/jayway/jsonpath/internal/JsonReader. See log file for details.

这是我正在使用的 POM:

<build>
        <plugins>
            <plugin>
                <groupId>com.lazerycode.jmeter</groupId>
                <artifactId>jmeter-maven-plugin</artifactId>
                <version>2.6.0</version>
                <configuration>
                    <testResultsTimestamp>false</testResultsTimestamp>
                    <propertiesUser>
                        <!-- Some user properties here -->
                    </propertiesUser>

                    <jmeterExtensions>
                        <artifact>kg.apc:jmeter-plugins-manager:0.19</artifact>
                        <artifact>Kg.apc:jmeter-plugins-extras-libs:1.3.1</artifact>
                        <artifact>kg.apc:jmeter-plugins-json:jar:2.3</artifact>
                    </jmeterExtensions>
                    <!-- The plugin uses some broken dependencies
                         An alternative is to set this to true and use excludedArtifacts, see below
                    -->
                    <downloadExtensionDependencies>false</downloadExtensionDependencies>

                </configuration>
                <executions>
                    <execution>
                        <id>jmeter-tests</id>
                        <phase>verify</phase>
                        <goals>
                            <goal>jmeter</goal>
                        </goals>
                    </execution>
                </executions>
                <dependencies>
                    <dependency>
                        <groupId>kg.apc</groupId>
                        <artifactId>jmeter-plugins-extras-libs</artifactId>
                        <version>1.3.1</version>
                    </dependency>

                </dependencies>
            </plugin>
        </plugins>
    </build>

以下是来自 jmeter 日志文件的完整日志:

2018-02-11 18:44:20,835 信息 o.a.j.t.JMeterThread:线程完成: 线程组 1-1 2018-02-11 18:44:20,857 错误 o.a.j.JMeter:未捕获 异常:java.lang.NoClassDefFoundError: com/jayway/jsonpath/internal/JsonReader 在 com.atlantbh.jmeter.plugins.jsonutils.jsonpathextractor.JSONPathExtractor.process(JSONPathExtractor.java:102) ~[jmeter-plugins-extras-libs-1.3.1.jar:?] 在 org.apache.jmeter.threads.JMeterThread.runPostProcessors(JMeterThread.java:833) ~[ApacheJMeter_core-3.3.jar:3.3 r1808647] 在 org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:524) ~[ApacheJMeter_core-3.3.jar:3.3 r1808647] 在 org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:424) ~[ApacheJMeter_core-3.3.jar:3.3 r1808647] 在 org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:255) ~[ApacheJMeter_core-3.3.jar:3.3 r1808647] 在 java.lang.Thread.run(Thread.java:748) [?:1.8.0_151] 原因: java.lang.ClassNotFoundException: com.jayway.jsonpath.internal.JsonReader 在 java.net.URLClassLoader.findClass(URLClassLoader.java:381) ~[?:1.8.0_151] 在 java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[?:1.8.0_151] 在 java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_151] ... 6 更多

我在 pom.xml 中添加了多个库,如 here 所述,但问题没有解决。

【问题讨论】:

    标签: maven jmeter performance-testing jmeter-plugins jmeter-maven-plugin


    【解决方案1】:
    1. 建议使用最新版本的JMeter,它的 Maven 插件和 JMeter 插件,所以我建议修改您的 pom.xml,例如:

      <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
               xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
          <modelVersion>4.0.0</modelVersion>
          <groupId>com.example</groupId>
          <artifactId>mvn-jmeter</artifactId>
          <version>1.0-SNAPSHOT</version>
          <name>maven-jmeter-demo</name>
          <url>http://maven.apache.org</url>
          <build>
              <plugins>
                  <plugin>
                      <groupId>com.lazerycode.jmeter</groupId>
                      <artifactId>jmeter-maven-plugin</artifactId>
                      <version>2.7.0</version>
                      <executions>
                          <execution>
                              <id>jmeter-tests</id>
                              <phase>verify</phase>
                              <goals>
                                  <goal>jmeter</goal>
                              </goals>
                          </execution>
                      </executions>
                      <configuration>
                          <jmeterExtensions>
                              <artifact>kg.apc:jmeter-plugins-json:jar:2.6</artifact>
                              <artifact>kg.apc:jmeter-plugins-manager:0.19</artifact>
                              <artifact>kg.apc:jmeter-plugins-extras-libs:1.4.0</artifact>
                          </jmeterExtensions>
                          <downloadExtensionDependencies>false</downloadExtensionDependencies>
                      </configuration>
                  </plugin>
              </plugins>
          </build>
      </project>
      
    2. 这可能是 Maven 缓存的问题,所以我建议使用 -U 键至少运行一次,例如:

      mvn -U clean verify
      
    3. 如果您仍然遇到问题,请使用 -X 键运行测试以启用完整的调试输出并使用它更新您的问题(您可能还需要提供 .jmx 脚本)

    更多信息:

    编辑: 谢谢德米特里,这真的很有帮助。在我的情况下,我必须在 pom.xml 中添加额外的库来解决这个错误。

    <artifact>com.jayway.jsonpath:json-path:2.2.0</artifact>
    

    我正在编辑这个答案,因为更多时候,人们不会查看 cmets 来获得答案。

    【讨论】:

    • 感谢 Dmitri 的详细回答。我的问题是它期望下载另一个库。我在我的 pom 中添加了&lt;artifact&gt;com.jayway.jsonpath:json-path:2.2.0&lt;/artifact&gt; 行,它开始正常工作。
    • 在接受您的回答之前,我还有一个问题,如果我们使用 lazerycode,我们如何运行一个测试? mvn verify 似乎运行了 src 文件夹中的所有测试。
    【解决方案2】:

    @Harish Talanki,如果你想在配置标签中只运行一个 jmx 文件,你可以在你的 pom 文件中这样给出

    <configuration>
                    <testFilesIncluded>
                        <jMeterTestFile>samplefile.jmx</jMeterTestFile>
                    </testFilesIncluded>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-11
      相关资源
      最近更新 更多