【问题标题】:Can't create CSV file in Linux with JMeterPluginsCMD.sh after updating log4j files to 2.17将 log4j 文件更新到 2.17 后,无法使用 JMeterPluginsCMD.sh 在 Linux 中创建 CSV 文件
【发布时间】:2022-01-27 09:23:03
【问题描述】:

一个示例命令是 -

Jmeter-master:/tmp$ JMeterPluginsCMD.sh --generate-csv /tmp/test.csv --input-jtl /tmp/jmeter.jtl --plugin-type AggregateReport

这适用于更新 log4j 文件后的 .bat 文件的 Windows,但不适用于 Linux 中的 .sh。我收到以下错误。还有其他人遇到这个吗?顺便说一句 - 一周前它在 Linux 中运行良好,但在某个时候停止运行,并且不记得进行过任何重大更改。

错误:java.lang.NoClassDefFoundError:kg/apc/logging/LoggingUtils *** 问题的技术细节如下 *** 主目录被检测为:/opt/apache-jmeter-5.0/lib 线程“main”中的异常 java.lang.NoClassDefFoundError: kg/apc/logging/LoggingUtils 在 kg.apc.cmdtools.ReporterTool.(ReporterTool.java:17) 在 java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native 方法) 在 java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) 在 java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) 在 java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490) 在 java.base/java.lang.Class.newInstance(Class.java:584) 在 kg.apc.cmdtools.PluginsCMD.getToolInstance(PluginsCMD.java:128) 在 kg.apc.cmdtools.PluginsCMD.processParams(PluginsCMD.java:50) 在 kg.apc.cmdtools.PluginsCMD.processParams(PluginsCMD.java:21) 在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native 方法) 在 java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.base/java.lang.reflect.Method.invoke(Method.java:566) 在 kg.apc.cmd.UniversalRunner.main(UniversalRunner.java:115) 引起:java.lang.ClassNotFoundException: kg.apc.logging.LoggingUtils 在 java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:476) 在 java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:589) 在 java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522) ... 14 更多

具体的自动化步骤 -

RUN curl -fsSL --compressed -o /tmp/jmeter.tgz https://dlcdn.apache.org//jmeter/binaries/$JMETER_VERSION.tgz \
    && tar -C /opt -xzf /tmp/jmeter.tgz \
    && rm /tmp/jmeter.tgz \
    && chmod +w /opt/$JMETER_VERSION/lib \
    && curl -fsSL --compressed -o /opt/$JMETER_VERSION/lib/jmeter-plugins-cmn-jmeter-0.7-sources.jar https://search.maven.org/classic/remotecontent?filepath=kg/apc/jmeter-plugins-cmn-jmeter/0.7/jmeter-plugins-cmn-jmeter-0.7-sources.jar \
    && curl -fsSL --compressed -o /tmp/mysql-connector.tar.gz https://downloads.mysql.com/archives/get/p/3/file/mysql-connector-java-6.0.3.tar.gz \
    && tar -C /opt/$JMETER_VERSION/lib -xzvf /tmp/mysql-connector.tar.gz --strip-components 1 mysql-connector-java-6.0.3/mysql-connector-java-6.0.3-bin.jar \
    && rm /tmp/mysql-connector.tar.gz \
    && curl -fsSL --compressed -o /opt/$JMETER_VERSION/lib/ext/jmeter-plugins-manager.jar https://jmeter-plugins.org/get \
    && curl -fsSL --compressed -o /opt/$JMETER_VERSION/lib/cmdrunner-$CMDRUNNER_VERSION.jar https://repo1.maven.org/maven2/kg/apc/cmdrunner/$CMDRUNNER_VERSION/cmdrunner-$CMDRUNNER_VERSION.jar \
    && java -cp /opt/$JMETER_VERSION/lib/ext/jmeter-plugins-manager.jar org.jmeterplugins.repository.PluginManagerCMDInstaller \
    && /opt/$JMETER_VERSION/bin/PluginsManagerCMD.sh install-all-except jpgc-hadoop,jpgc-oauth,ulp-jmeter-gwt-plugin,ulp-jmeter-autocorrelator-plugin,ulp-jmeter-videostreaming-plugin \
    && sleep 2 \
    && /opt/$JMETER_VERSION/bin/PluginsManagerCMD.sh status

尝试执行 JMeterPluginsCMD.sh 时出错 -

2021-12-30 13:03:12,008 WARN o.j.r.Plugin: Unable to load class: nz.co.breakpoint.jmeter.vizualizers.sshmon.SSHMonCollector
java.lang.NoClassDefFoundError: kg/apc/jmeter/vizualizers/MonitoringResultsCollector
    at java.lang.ClassLoader.defineClass1(Native Method) ~[?:?]
    at java.lang.ClassLoader.defineClass(ClassLoader.java:1017) ~[?:?]
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:174) ~[?:?]
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:555) ~[?:?]
    at java.net.URLClassLoader$1.run(URLClassLoader.java:458) ~[?:?]
    at java.net.URLClassLoader$1.run(URLClassLoader.java:452) ~[?:?]
    at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
    at java.net.URLClassLoader.findClass(URLClassLoader.java:451) ~[?:?]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:589) ~[?:?]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:522) ~[?:?]
    at org.jmeterplugins.repository.Plugin.getJARPath(Plugin.java:202) [jmeter-plugins-manager.jar:?]
    at org.jmeterplugins.repository.Plugin.detectInstalledPlugin(Plugin.java:108) [jmeter-plugins-manager.jar:?]
    at org.jmeterplugins.repository.Plugin.detectInstalled(Plugin.java:97) [jmeter-plugins-manager.jar:?]
    at org.jmeterplugins.repository.PluginManager.load(PluginManager.java:86) [jmeter-plugins-manager.jar:?]
    at org.jmeterplugins.repository.PluginManager.getStaticManager(PluginManager.java:344) [jmeter-plugins-manager.jar:?]
    at org.jmeterplugins.repository.PluginManager.getAllPluginsStatus(PluginManager.java:370) [jmeter-plugins-manager.jar:?]
    at org.jmeterplugins.repository.PluginManagerCMD.processParams(PluginManagerCMD.java:72) [jmeter-plugins-manager.jar:?]
    at kg.apc.cmdtools.PluginsCMD.processParams(PluginsCMD.java:62) [cmdrunner-2.2.jar:?]
    at kg.apc.cmdtools.PluginsCMD.processParams(PluginsCMD.java:21) [cmdrunner-2.2.jar:?]
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
    at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:?]
    at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
    at java.lang.reflect.Method.invoke(Method.java:566) ~[?:?]
    at kg.apc.cmd.UniversalRunner.main(UniversalRunner.java:115) [cmdrunner-2.2.jar:?]
Caused by: java.lang.ClassNotFoundException: kg.apc.jmeter.vizualizers.MonitoringResultsCollector
    at java.net.URLClassLoader.findClass(URLClassLoader.java:476) ~[?:?]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:589) ~[?:?]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:522) ~[?:?]
    ... 24 more

【问题讨论】:

  • 如果不清楚,我相信这在更新 log4j 文件后可以在 Linux 中运行,但在此之后由于未知原因而中断。

标签: java linux csv jmeter


【解决方案1】:

java.lang.NoClassDefFoundError 通常与运行时环境版本有关。尝试检查两个 Java 版本是否相同。

如果它们不相等,请尝试相应地在 Linux 系统上更新/降级您的版本。

如果它们相等,请尝试检查缺失的库。

【讨论】:

  • Jenkins 流水线自动化设置 JRE 版本。在观察到此问题之前和之后,这一直是版本 11。 (对我来说)自动化在哪里/如何获取 Linux 版本不太清楚,但会看看我是否能找到。我能看到这一点并不明显。
  • BTW - 我怎么知道图书馆是否“失踪”了?同样,这一切都是通过自动化完成的并且没有改变(据我所知),除了我用 2.17 文件替换 2.11 log4j 文件。
  • 在本地 Jenkins 服务器上遇到了同样的问题,这比通过 AWS 的自动化更容易使用。更新 JMeter 当然没有得到已经到位的插件,所以我没有 cmdrunner-x.x.jar 或 jmeter-plugins-cmd-x.x.jar。这解决了当地的詹金斯工作。现在我只需要看看在 AWS 中启动的自动化服务器有什么不同,但我觉得我至少在正确的轨道上。
  • 所以问题是我实际上没有在 AWS 服务器上获取 JMeterPluginsCMD.sh 文件。把它放在那里的命令(/opt/$JMETER_VERSION/bin/PluginsManagerCMD.sh)失败了,不知道为什么。我会将错误信息添加到原始帖子的末尾,因为它太大而无法放在这里。
  • 我从安装插件的命令中提取了 java -cp 命令,这样我就可以分别看到每个命令的输出。该命令不会引发错误,但也不会放置 JMeterPluginsCMD.sh 文件。
【解决方案2】:

我不知道“将 log4j 文件更新到 2.17”是什么意思,你得到的错误是关于在 JMeter Classpath 中缺少 jmeter-plugins-cmn-jmeter .jar

如果您喜欢手动操作 .jar 库,您可以将最喜欢的版本下载到 JMeter 安装的“lib”文件夹中,下次 JMeter 重新启动或运行命令行图形生成器工具时,错误应该会消失。

不过我会推荐:

【讨论】:

  • 由于 log4j 的安全问题,我们最近不得不更新所有服务器上的 log4j 文件。 JMeter 使用 log4j。这可能是巧合,但我看到的问题发生在那个时候。现在有一个 JMeter 版本具有更新的 log4j 文件,但现在有不同的错误/问题。
  • 我将 jmeter-plugins-cmn-jmeter-0.7-sources.jar 放在路径中的 /lib 文件夹中。同样的问题。这是正确的丢失文件吗?
  • 如果有帮助,我会将我正在使用的特定自动化步骤添加到原始帖子中。它们太大,无法添加为评论。
  • 我从未告诉过你将“sources”jar 放到“/lib”文件夹中,请向提供这些说明的人提出这些问题
【解决方案3】:

我无法创建 CSV 文件的原因是因为这是使用不存在的 JMeterPluginsCMD.sh 完成的。应该创建 JMeterPluginsCMD.sh 和 JMeterPluginsCMD.bat 文件的命令不起作用。

我可以看到它没有抛出错误,但它也没有在 /bin 文件夹中创建 .sh 或 .bat 文件。

据我所知,应该执行此操作的命令是 -

java -cp jmeter-plugins-manager.jar org.jmeterplugins.repository.JMeterPluginsCMDInstaller

如果我无法弄清楚为什么我没有得到这些 sh ​​和 bat 文件,我将关闭此问题并打开另一个问题。

在这种情况下,不能通过 GUI 执行此操作,因为正在通过自动化设置和执行测试。

【讨论】:

    猜你喜欢
    • 2017-07-27
    • 2018-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    • 2017-06-17
    • 2020-08-10
    相关资源
    最近更新 更多