[Jmeter]源单元 'semantic analysis' 阶段异常 'Script1.groovy' 不支持 class 文件主要版本 61

[Jmeter]exception in phase 'semantic analysis' in source unit 'Script1.groovy' Unsupported class file major version 61

我已经使用 brew install jmeter 安装了最新版本的 jmeter

我也安装了 jmeter 插件管理器。

当我开始 运行 测试时,出现以下错误。

2021-09-29 20:09:47,167 INFO o.a.j.u.JMeterUtils: Setting Locale to en_EN
2021-09-29 20:09:47,190 INFO o.a.j.JMeter: Loading user properties from: user.properties
2021-09-29 20:09:47,190 INFO o.a.j.JMeter: Loading system properties from: system.properties
2021-09-29 20:09:47,191 INFO o.a.j.JMeter: Copyright (c) 1998-2020 The Apache Software Foundation
2021-09-29 20:09:47,191 INFO o.a.j.JMeter: Version 5.3
2021-09-29 20:09:47,192 INFO o.a.j.JMeter: java.version=17
2021-09-29 20:09:47,192 INFO o.a.j.JMeter: java.vm.name=OpenJDK 64-Bit Server VM
2021-09-29 20:09:47,192 INFO o.a.j.JMeter: os.name=Mac OS X
2021-09-29 20:09:47,192 INFO o.a.j.JMeter: os.arch=x86_64
2021-09-29 20:09:47,192 INFO o.a.j.JMeter: os.version=11.2
2021-09-29 20:09:47,192 INFO o.a.j.JMeter: file.encoding=UTF-8
2021-09-29 20:09:47,192 INFO o.a.j.JMeter: java.awt.headless=null
2021-09-29 20:09:47,192 INFO o.a.j.JMeter: Max memory     =1073741824
2021-09-29 20:09:47,192 INFO o.a.j.JMeter: Available Processors =16
2021-09-29 20:09:47,200 INFO o.a.j.JMeter: Default Locale=English (EN)
2021-09-29 20:09:47,201 INFO o.a.j.JMeter: JMeter  Locale=English (EN)
2021-09-29 20:09:47,201 INFO o.a.j.JMeter: JMeterHome=/Users/pradheep.shrinivasan/Downloads/apache-jmeter-5.3
2021-09-29 20:09:47,201 INFO o.a.j.JMeter: user.dir  =/Users/pradheep.shrinivasan/Downloads/apache-jmeter-5.3/bin
2021-09-29 20:09:47,201 INFO o.a.j.JMeter: PWD       =/Users/pradheep.shrinivasan/Downloads/apache-jmeter-5.3/bin
2021-09-29 20:09:47,202 INFO o.a.j.JMeter: IP: 192.168.0.18 Name: TD-C02DM3USMD6T FullName: 192.168.0.18
2021-09-29 20:09:47,507 INFO o.a.j.JMeter: Setting LAF to: laf:com.apple.laf.AquaLookAndFeel
2021-09-29 20:09:48,100 INFO o.a.j.JMeter: Loaded icon properties from org/apache/jmeter/images/icon.properties
2021-09-29 20:09:48,740 INFO o.j.r.JARSourceHTTP: Found cached repo
2021-09-29 20:09:48,851 INFO o.j.r.PluginManager: Plugins Status: [bzm-parallel=0.11, jpgc-plugins-manager=1.6, jmeter-core=5.3, jmeter-ftp=5.3, jmeter-http=5.3, jmeter-jdbc=5.3, jmeter-jms=5.3, jmeter-junit=5.3, jmeter-java=5.3, jmeter-ldap=5.3, jmeter-mail=5.3, jmeter-mongodb=5.3, jmeter-native=5.3, jmeter-tcp=5.3, jmeter-components=5.3]
2021-09-29 20:09:48,963 INFO o.a.j.JMeter: Loading file: /Users/pradheep.shrinivasan/code/vantage-streams/streams-performance-tests/streams-test-data-preloaded.jmx
2021-09-29 20:09:48,965 INFO o.a.j.s.FileServer: Default base='/Users/pradheep.shrinivasan/Downloads/apache-jmeter-5.3/bin'
2021-09-29 20:09:48,965 INFO o.a.j.s.FileServer: Set new base='/Users/pradheep.shrinivasan/code/vantage-streams/streams-performance-tests'
2021-09-29 20:09:49,106 INFO o.a.j.s.SaveService: Testplan (JMX) version: 2.2. Testlog (JTL) version: 2.2
2021-09-29 20:09:49,113 INFO o.a.j.s.SaveService: Using SaveService properties version 5.0
2021-09-29 20:09:49,115 INFO o.a.j.s.SaveService: Using SaveService properties file encoding UTF-8
2021-09-29 20:09:49,116 INFO o.a.j.s.SaveService: Loading file: /Users/pradheep.shrinivasan/code/vantage-streams/streams-performance-tests/streams-test-data-preloaded.jmx
2021-09-29 20:09:49,245 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/html is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
2021-09-29 20:09:49,246 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for application/xhtml+xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
2021-09-29 20:09:49,246 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for application/xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
2021-09-29 20:09:49,246 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/xml is org.apache.jmeter.protocol.http.parser.LagartoBasedHtmlParser
2021-09-29 20:09:49,246 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/vnd.wap.wml is org.apache.jmeter.protocol.http.parser.RegexpHTMLParser
2021-09-29 20:09:49,246 INFO o.a.j.p.h.s.HTTPSamplerBase: Parser for text/css is org.apache.jmeter.protocol.http.parser.CssParser
2021-09-29 20:09:49,401 INFO o.a.j.s.SampleResult: Note: Sample TimeStamps are START times
2021-09-29 20:09:49,401 INFO o.a.j.s.SampleResult: sampleresult.default.encoding is set to ISO-8859-1
2021-09-29 20:09:49,401 INFO o.a.j.s.SampleResult: sampleresult.useNanoTime=true
2021-09-29 20:09:49,402 INFO o.a.j.s.SampleResult: sampleresult.nanoThreadSleep=5000
2021-09-29 20:09:49,481 INFO o.a.j.s.FileServer: Set new base='/Users/pradheep.shrinivasan/code/vantage-streams/streams-performance-tests'
2021-09-29 20:09:50,512 INFO o.a.j.v.ViewResultsFullVisualizer: Add JavaFX to your Java installation if you want to use renderer: org.apache.jmeter.visualizers.RenderInBrowser
2021-09-29 20:10:01,410 INFO o.a.j.e.StandardJMeterEngine: Running the test!
2021-09-29 20:10:01,410 INFO o.a.j.s.SampleEvent: List of sample_variables: []
2021-09-29 20:10:01,411 INFO o.a.j.s.SampleEvent: List of sample_variables: []
2021-09-29 20:10:01,411 INFO o.a.j.e.u.CompoundVariable: Note: Function class names must contain the string: '.functions.'
2021-09-29 20:10:01,411 INFO o.a.j.e.u.CompoundVariable: Note: Function class names must not contain the string: '.gui.'
2021-09-29 20:10:01,441 INFO o.a.j.g.u.JMeterMenuBar: setRunning(true, *local*)
2021-09-29 20:10:01,442 INFO o.a.j.e.StandardJMeterEngine: Starting setUp thread groups
2021-09-29 20:10:01,443 INFO o.a.j.e.StandardJMeterEngine: Starting setUp ThreadGroup: 1 : setUp streaming 
2021-09-29 20:10:01,443 INFO o.a.j.e.StandardJMeterEngine: Starting 1 threads for group setUp streaming.
2021-09-29 20:10:01,443 INFO o.a.j.e.StandardJMeterEngine: Thread will continue on error
2021-09-29 20:10:01,443 INFO o.a.j.t.ThreadGroup: Starting thread group... number=1 threads=1 ramp-up=1 delayedStart=false
2021-09-29 20:10:01,457 INFO o.a.j.t.ThreadGroup: Started thread group number 1
2021-09-29 20:10:01,458 INFO o.a.j.e.StandardJMeterEngine: Waiting for all setup thread groups to exit
2021-09-29 20:10:01,458 INFO o.a.j.t.JMeterThread: Thread started: setUp streaming 1-1
2021-09-29 20:10:01,463 INFO o.a.j.p.h.s.HTTPHCAbstractImpl: Local host = TD-C02DM3USMD6T
2021-09-29 20:10:01,466 INFO o.a.j.p.h.s.HTTPHC4Impl: HTTP request retry count = 0
2021-09-29 20:10:01,731 INFO o.a.j.p.h.s.h.LazyLayeredConnectionSocketFactory: Setting up HTTPS TrustAll Socket Factory
2021-09-29 20:10:01,733 INFO o.a.j.u.JsseSSLManager: Using default SSL protocol: TLS
2021-09-29 20:10:01,733 INFO o.a.j.u.JsseSSLManager: SSL session context: per-thread
2021-09-29 20:10:01,736 INFO o.a.j.u.SSLManager: JmeterKeyStore Location:  type JKS
2021-09-29 20:10:01,736 INFO o.a.j.u.SSLManager: KeyStore created OK
2021-09-29 20:10:01,736 WARN o.a.j.u.SSLManager: Keystore file not found, loading empty keystore
2021-09-29 20:10:04,217 INFO o.a.j.t.JMeterThread: Thread finished: setUp streaming 1-1
2021-09-29 20:10:04,218 ERROR o.a.j.JMeter: Uncaught exception in thread Thread[setUp streaming 1-1,6,main]
org.codehaus.groovy.GroovyBugError: BUG! exception in phase 'semantic analysis' in source unit 'Script1.groovy' Unsupported class file major version 61
    at org.codehaus.groovy.control.CompilationUnit$ISourceUnitOperation.doPhaseOperation(CompilationUnit.java:884) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:623) ~[groovy-3.0.3.jar:3.0.3]
    at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:389) ~[groovy-3.0.3.jar:3.0.3]
    at groovy.lang.GroovyClassLoader.lambda$parseClass(GroovyClassLoader.java:332) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.runtime.memoize.StampedCommonCache.compute(StampedCommonCache.java:163) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.runtime.memoize.StampedCommonCache.getAndPut(StampedCommonCache.java:154) ~[groovy-3.0.3.jar:3.0.3]
    at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:330) ~[groovy-3.0.3.jar:3.0.3]
    at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:314) ~[groovy-3.0.3.jar:3.0.3]
    at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:257) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.getScriptClass(GroovyScriptEngineImpl.java:336) ~[groovy-jsr223-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.compile(GroovyScriptEngineImpl.java:181) ~[groovy-jsr223-3.0.3.jar:3.0.3]
    at org.apache.jmeter.util.JSR223TestElement.processFileOrScript(JSR223TestElement.java:216) ~[ApacheJMeter_core.jar:5.3]
    at org.apache.jmeter.extractor.JSR223PostProcessor.process(JSR223PostProcessor.java:45) ~[ApacheJMeter_components.jar:5.3]
    at org.apache.jmeter.threads.JMeterThread.runPostProcessors(JMeterThread.java:940) ~[ApacheJMeter_core.jar:?]
    at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:572) ~[ApacheJMeter_core.jar:?]
    at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:489) ~[ApacheJMeter_core.jar:?]
    at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:256) ~[ApacheJMeter_core.jar:?]
    at java.lang.Thread.run(Thread.java:833) [?:?]
Caused by: java.lang.IllegalArgumentException: Unsupported class file major version 61
    at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:196) ~[groovy-3.0.3.jar:3.0.3]
    at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:177) ~[groovy-3.0.3.jar:3.0.3]
    at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:163) ~[groovy-3.0.3.jar:3.0.3]
    at groovyjarjarasm.asm.ClassReader.<init>(ClassReader.java:284) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.ast.decompiled.AsmDecompiler.parseClass(AsmDecompiler.java:81) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.control.ClassNodeResolver.findDecompiled(ClassNodeResolver.java:251) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.control.ClassNodeResolver.tryAsLoaderClassOrScript(ClassNodeResolver.java:189) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.control.ClassNodeResolver.findClassNode(ClassNodeResolver.java:169) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.control.ClassNodeResolver.resolveName(ClassNodeResolver.java:125) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.control.ResolveVisitor.resolveToOuter(ResolveVisitor.java:874) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.control.ResolveVisitor.resolve(ResolveVisitor.java:499) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.control.ResolveVisitor.resolveFromDefaultImports(ResolveVisitor.java:656) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.control.ResolveVisitor.resolveFromDefaultImports(ResolveVisitor.java:619) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.control.ResolveVisitor.resolve(ResolveVisitor.java:498) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.control.ResolveVisitor.resolve(ResolveVisitor.java:461) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.control.ResolveVisitor.transformVariableExpression(ResolveVisitor.java:1135) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.control.ResolveVisitor.transform(ResolveVisitor.java:893) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.control.ResolveVisitor.transformPropertyExpression(ResolveVisitor.java:1019) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.control.ResolveVisitor.transform(ResolveVisitor.java:895) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.control.ResolveVisitor.transformMethodCallExpression(ResolveVisitor.java:1280) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.control.ResolveVisitor.transform(ResolveVisitor.java:901) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.ast.ClassCodeExpressionTransformer.visitExpressionStatement(ClassCodeExpressionTransformer.java:108) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.ast.stmt.ExpressionStatement.visit(ExpressionStatement.java:40) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.ast.CodeVisitorSupport.visitBlockStatement(CodeVisitorSupport.java:86) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitBlockStatement(ClassCodeVisitorSupport.java:164) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.control.ResolveVisitor.visitBlockStatement(ResolveVisitor.java:1569) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.ast.stmt.BlockStatement.visit(BlockStatement.java:69) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.ast.ClassCodeExpressionTransformer.visitIfElse(ClassCodeExpressionTransformer.java:120) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.ast.stmt.IfStatement.visit(IfStatement.java:41) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.ast.CodeVisitorSupport.visitBlockStatement(CodeVisitorSupport.java:86) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitBlockStatement(ClassCodeVisitorSupport.java:164) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.control.ResolveVisitor.visitBlockStatement(ResolveVisitor.java:1569) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.ast.stmt.BlockStatement.visit(BlockStatement.java:69) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClassCodeContainer(ClassCodeVisitorSupport.java:138) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitConstructorOrMethod(ClassCodeVisitorSupport.java:111) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.ast.ClassCodeExpressionTransformer.visitConstructorOrMethod(ClassCodeExpressionTransformer.java:66) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.control.ResolveVisitor.visitConstructorOrMethod(ResolveVisitor.java:294) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitMethod(ClassCodeVisitorSupport.java:106) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.ast.ClassNode.visitMethods(ClassNode.java:1100) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.ast.ClassNode.visitContents(ClassNode.java:1093) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.ast.ClassCodeVisitorSupport.visitClass(ClassCodeVisitorSupport.java:52) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.control.ResolveVisitor.visitClass(ResolveVisitor.java:1478) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.control.ResolveVisitor.startResolving(ResolveVisitor.java:262) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.control.CompilationUnit.lambda$new(CompilationUnit.java:717) ~[groovy-3.0.3.jar:3.0.3]
    at org.codehaus.groovy.control.CompilationUnit$ISourceUnitOperation.doPhaseOperation(CompilationUnit.java:880) ~[groovy-3.0.3.jar:3.0.3]
    ... 17 more
2021-09-29 20:10:04,222 INFO o.a.j.e.StandardJMeterEngine: All Setup Threads have ended
2021-09-29 20:10:04,259 INFO o.a.j.e.StandardJMeterEngine: No enabled thread groups found
2021-09-29 20:10:04,259 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test
2021-09-29 20:10:04,260 INFO o.a.j.g.u.JMeterMenuBar: setRunning(false, *local*)

我尝试使用 jmeter 5.3 以及 java 11 和 java 17,但我仍然遇到同样的错误。

问题是 java 版本不匹配。

安装了多个 java 版本,它们相互冲突。

所以我卸载了所有版本,然后只安装了一个 java11 版本。

还有 运行 使用 java -jar ApacheJMeter.jar

的 jmeter

这确保它使用的是我传递给它但不是从 运行dom 位置选择它的 java 版本。

  1. 您使用的是 2020 年 5 月发布的 JMeter 5.3
  2. 您使用的是 2021 年 9 月发布的Java 17

所以可能是 Groovy 3.0.5 也来自 2020 年,无法处理使用 Java 编译的类 17,请尝试降级您的 JDK。 运行 JMeter 5.3 所需的最低版本是 Java 8

还有 according to JMeter Best Practices you should be always using the latest stable version so consider upgrading to JMeter 5.4.1 or whatever is the newest version available at JMeter Downloads 页。