【问题标题】:No class Def found error while running jar file in jmeter在 jmeter 中运行 jar 文件时没有找到类 Def 错误
【发布时间】:2022-01-03 20:16:03
【问题描述】:

我正在通过 jar 文件在 jmeter 中运行 java 代码。jmeter 测试运行正常,但是在调用 jar 文件中的方法时会抛出错误。从 CMD 和 jenkins 运行时 jar 文件正常运行。

java.lang.NoClassDefFoundError: org/json/simple/JSONObject
    at CloudBLM_API.ApiAuthentication.<init>(ApiAuthentication.java:23) ~[ModelPublishWebGL.jar:?]
    at CloudBLM_API.Publisher.<init>(Publisher.java:18) ~[ModelPublishWebGL.jar:?]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_201]
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source) ~[?:1.8.0_201]
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source) ~[?:1.8.0_201]
    at java.lang.reflect.Constructor.newInstance(Unknown Source) ~[?:1.8.0_201]
    at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:83) ~[groovy-all-2.4.16.jar:2.4.16]
    at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:105) ~[groovy-all-2.4.16.jar:2.4.16]
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:59) ~[groovy-all-2.4.16.jar:2.4.16]
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:238) ~[groovy-all-2.4.16.jar:2.4.16]
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:250) ~[groovy-all-2.4.16.jar:2.4.16]
    at Script6.run(Script6.groovy:13) ~[?:?]
    at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.eval(GroovyScriptEngineImpl.java:321) ~[groovy-all-2.4.16.jar:2.4.16]
    at org.codehaus.groovy.jsr223.GroovyCompiledScript.eval(GroovyCompiledScript.java:72) ~[groovy-all-2.4.16.jar:2.4.16]
    at javax.script.CompiledScript.eval(Unknown Source) ~[?:1.8.0_201]
    at org.apache.jmeter.util.JSR223TestElement.processFileOrScript(JSR223TestElement.java:223) ~[ApacheJMeter_core.jar:5.2.1]
    at org.apache.jmeter.extractor.JSR223PostProcessor.process(JSR223PostProcessor.java:44) ~[ApacheJMeter_components.jar:5.2.1]
    at org.apache.jmeter.threads.JMeterThread.runPostProcessors(JMeterThread.java:931) ~[ApacheJMeter_core.jar:?]
    at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:569) ~[ApacheJMeter_core.jar:?]
    at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:490) ~[ApacheJMeter_core.jar:?]
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:257) ~[ApacheJMeter_core.jar:?]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_201]
Caused by: java.lang.ClassNotFoundException: org.json.simple.JSONObject
    at java.net.URLClassLoader.findClass(Unknown Source) ~[?:1.8.0_201]
    at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_201]
    at java.lang.ClassLoader.loadClass(Unknown Source) ~[?:1.8.0_201]
    ... 22 more

【问题讨论】:

  • 请提供足够的代码,以便其他人更好地理解或重现问题。

标签: jmeter performance-testing


【解决方案1】:

错误提示JMeter Classpath 中没有json-simple jar,因此您需要:

  1. 下载json-simple-1.1.1.jar并将其放到JMeter安装的“lib”文件夹中
  2. 重新启动 JMeter 以拾取 .jar
  3. 错误应该消失。如果您遇到类似问题,请对 Groovy 脚本中使用的每个依赖项 .jar 重复此操作
  4. 根据9 Easy Solutions for a JMeter Load Test “Out of Memory” Failure 文章,您应该始终使用最新版本的 JMeter,因此请考虑升级到 JMeter 5.4.1(或JMeter Downloads 页面上提供的最新稳定版本)
  5. 很难在没有看到完整代码的情况下推荐一些东西,以防万一被告知 Groovy 中有内置 JSON 支持,因此如果您使用外部库解析 JSON,则可以用 Groovy 特定函数替换逻辑,请参阅Parsing and producing JSONGroovy 文档章节了解更多详情

【讨论】:

  • 感谢您的回答。我尝试手动添加罐子,我正在使用 Jmeter(5.4.1) 的更新版本。但是现在我调用 jar 的采样器(http 请求)没有得到执行。
猜你喜欢
  • 2013-01-22
  • 2017-07-30
  • 2015-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-26
  • 1970-01-01
  • 2013-11-14
相关资源
最近更新 更多