当 jmeter 在非 GUI 模式下运行时出现 "Uncaught Exception BUG! exception in phase 'semantic analysis'" 错误

Getting "Uncaught Exception BUG! exception in phase 'semantic analysis'" errors when jmeter runs in NON-GUI mode

我可以通过使用像“jmeter -t my-test.jmx”这样的命令在 GUI 模式下 运行 jmeter。但是,当我使用“jmeter -n -t my-test.jmx”添加“-n”(非 GUI 模式)时,出现以下错误。我 运行 在 Mac Big Sur 上安装它,更新到最新的 jmeter 5.4.3(是 5.4.1,两个版本都有相同的错误)。另外,我的 java 版本是“A​​doptOpenJDK (build 11.0.10+9)”。可能是什么问题?

Created the tree successfully using my-test.jmx
Starting standalone test @ Thu Jan 13 16:19:42 EST 2022 (1642108782890)
Waiting for possible Shutdown/StopTestNow/HeapDump/ThreadDump message on port 4445
Uncaught Exception BUG! exception in phase 'semantic analysis' in source unit 'Script1.groovy' Unsupported class file major version 61 in thread Thread[echoDom (jaxp-serializer) Thread Group 1-1,5,main]. See log file for details.
Uncaught Exception BUG! exception in phase 'semantic analysis' in source unit 'Script2.groovy' Unsupported class file major version 61 in thread Thread[echoDom (jaxp-serializer) Thread Group 1-3,5,main]. See log file for details.
Uncaught Exception BUG! exception in phase 'semantic analysis' in source unit 'Script3.groovy' Unsupported class file major version 61 in thread Thread[echoDom (jaxp-serializer) Thread Group 1-2,5,main]. See log file for details.
...
summary =      0 in 00:00:00 = ******/s Avg:     0 Min: 9223372036854775807 Max: -9223372036854775808 Err:     0 (0.00%)
Tidying up ...    @ Thu Jan 13 16:20:34 EST 2022 (1642108834650)
... end of run

根据 General Layout table of the Java class file 维基百科文章

Java SE 17 = 61 (0x3D hex),

所以我认为你的 AdoptOpenJDK (build 11.0.10+9) 是错误的,看看 jmeter.log file,它报告了 JMeter 使用的 Java 版本,我的期望是你会看到 Java那里有17个。

所以你需要指向JMeter使用更早的Java版本,JMeter 5.4+ is designed to work with JDK 8

我偶然发现了解决方案。我更改了文件“/usr/local/Cellar/jmeter/5.4.3/bin/jmeter”。它曾经在里面有“JAVA_HOME="/usr/local/opt/openjdk"",指向 java 17 安装。我用 java 11 位置“/Library/Java/JavaVirtualMachines/adoptopenjdk-11.jdk/Contents/Home”替换了 JAVA_HOME。问题已解决。