No suitable ClassLoader found for grab

解决Groovy中因Grape类加载机制导致的NosuitableClassLoaderfoundforgrab异常问题,通过设置启动参数-Dgroovy.grape.enable=false来禁用grape加载机制。

用groovy引用依赖时候发生了No suitable ClassLoader found for grab 异常, 主要原因是grape类加载机制有问题,具体没有细研究,目前想到的办法是不使用grape相关加载机制

  • 解决问题
  • 在启动参数中添加,启动即可
 -Dgroovy.grape.enable=false

在这里插入图片描述

2025-05-11 02:49:03,576 INFO o.a.j.e.StandardJMeterEngine: Running the test! 2025-05-11 02:49:03,577 INFO o.a.j.s.SampleEvent: List of sample_variables: [] 2025-05-11 02:49:03,577 INFO o.a.j.s.SampleEvent: List of sample_variables: [] 2025-05-11 02:49:03,578 INFO o.a.j.e.u.CompoundVariable: Note: Function class names must contain the string: '.functions.' 2025-05-11 02:49:03,578 INFO o.a.j.e.u.CompoundVariable: Note: Function class names must not contain the string: '.gui.' 2025-05-11 02:49:03,781 INFO o.a.j.g.u.JMeterMenuBar: setRunning(true, *local*) 2025-05-11 02:49:03,887 INFO o.a.j.e.StandardJMeterEngine: Starting ThreadGroup: 1 : 线程组 2025-05-11 02:49:03,887 INFO o.a.j.e.StandardJMeterEngine: Starting 1 threads for group 线程组. 2025-05-11 02:49:03,887 INFO o.a.j.e.StandardJMeterEngine: Thread will continue on error 2025-05-11 02:49:03,887 INFO o.a.j.t.ThreadGroup: Starting thread group... number=1 threads=1 ramp-up=1 delayedStart=false 2025-05-11 02:49:03,899 INFO o.a.j.t.ThreadGroup: Started thread group number 1 2025-05-11 02:49:03,899 INFO o.a.j.e.StandardJMeterEngine: All thread groups have been started 2025-05-11 02:49:03,901 INFO o.a.j.t.JMeterThread: Thread started: 线程组 1-1 2025-05-11 02:49:03,912 INFO o.a.j.p.h.s.HTTPHCAbstractImpl: Local host = DESKTOP-1UPGIAU 2025-05-11 02:49:03,916 INFO o.a.j.p.h.s.HTTPHC4Impl: HTTP request retry count = 0 2025-05-11 02:49:04,239 INFO o.a.j.s.FileServer: Stored: D:/项目/1、联赢激光/SW切换/外购件模型/外购件下载 - 副本.csv 2025-05-11 02:49:09,346 ERROR o.a.j.e.JSR223PostProcessor: Problem in JSR223 script, JSR223 后置处理程序 javax.script.ScriptException: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: General error during conversion: No suitable ClassLoader found for grab java.lang.RuntimeException: No suitable ClassLoader found for grab at groovy.grape.GrapeIvy.chooseClassLoader(GrapeIvy.groovy:179) at groovy.grape.GrapeIvy.grab(GrapeIvy.groovy:249) at groovy.grape.Grape$1.run(Grape.java:174) at groovy.grape.Grape$1.run(Grape.java:160) at java.security.AccessController.doPrivileged(Native Method) at groovy.grape.Grape.grab(Grape.java:160) at groovy.grape.GrabAnnotationTransformation.visit(GrabAnnotationTransformation.java:377) at org.codehaus.groovy.transform.ASTTransformationVisitor.lambda$addPhaseOperationsForGlobalTransforms$4(ASTTransformationVisitor.java:338) at org.codehaus.groovy.control.CompilationUnit$ISourceUnitOperation.doPhaseOperation(CompilationUnit.java:901) at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:671) at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:635) at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:389) at groovy.lang.GroovyClassLoader.lambda$parseClass$3(GroovyClassLoader.java:332) at org.codehaus.groovy.runtime.memoize.StampedCommonCache.compute(StampedCommonCache.java:163) at org.codehaus.groovy.runtime.memoize.StampedCommonCache.getAndPut(StampedCommonCache.java:154) at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:330) at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:314) at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:257) at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.getScriptClass(GroovyScriptEngineImpl.java:336) at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.compile(GroovyScriptEngineImpl.java:181) at org.apache.jmeter.util.JSR223TestElement.processFileOrScript(JSR223TestElement.java:211) at org.apache.jmeter.extractor.JSR223PostProcessor.process(JSR223PostProcessor.java:45) at org.apache.jmeter.threads.JMeterThread.runPostProcessors(JMeterThread.java:968) at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:585) at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:501) at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:268) at java.lang.Thread.run(Thread.java:748) 1 error at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.compile(GroovyScriptEngineImpl.java:183) ~[groovy-jsr223-3.0.11.jar:3.0.11] at org.apache.jmeter.util.JSR223TestElement.processFileOrScript(JSR223TestElement.java:211) ~[ApacheJMeter_core.jar:5.5] at org.apache.jmeter.extractor.JSR223PostProcessor.process(JSR223PostProcessor.java:45) ~[ApacheJMeter_components.jar:5.5] at org.apache.jmeter.threads.JMeterThread.runPostProcessors(JMeterThread.java:968) ~[ApacheJMeter_core.jar:5.5] at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:585) ~[ApacheJMeter_core.jar:5.5] at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:501) ~[ApacheJMeter_core.jar:5.5] at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:268) ~[ApacheJMeter_core.jar:5.5] at java.lang.Thread.run(Thread.java:748) ~[?:1.8.0_172] Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: General error during conversion: No suitable ClassLoader found for grab java.lang.RuntimeException: No suitable ClassLoader found for grab at groovy.grape.GrapeIvy.chooseClassLoader(GrapeIvy.groovy:179) at groovy.grape.GrapeIvy.grab(GrapeIvy.groovy:249) at groovy.grape.Grape$1.run(Grape.java:174) at groovy.grape.Grape$1.run(Grape.java:160) at java.security.AccessController.doPrivileged(Native Method) at groovy.grape.Grape.grab(Grape.java:160) at groovy.grape.GrabAnnotationTransformation.visit(GrabAnnotationTransformation.java:377) at org.codehaus.groovy.transform.ASTTransformationVisitor.lambda$addPhaseOperationsForGlobalTransforms$4(ASTTransformationVisitor.java:338) at org.codehaus.groovy.control.CompilationUnit$ISourceUnitOperation.doPhaseOperation(CompilationUnit.java:901) at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:671) at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:635) at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:389) at groovy.lang.GroovyClassLoader.lambda$parseClass$3(GroovyClassLoader.java:332) at org.codehaus.groovy.runtime.memoize.StampedCommonCache.compute(StampedCommonCache.java:163) at org.codehaus.groovy.runtime.memoize.StampedCommonCache.getAndPut(StampedCommonCache.java:154) at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:330) at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:314) at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:257) at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.getScriptClass(GroovyScriptEngineImpl.java:336) at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.compile(GroovyScriptEngineImpl.java:181) at org.apache.jmeter.util.JSR223TestElement.processFileOrScript(JSR223TestElement.java:211) at org.apache.jmeter.extractor.JSR223PostProcessor.process(JSR223PostProcessor.java:45) at org.apache.jmeter.threads.JMeterThread.runPostProcessors(JMeterThread.java:968) at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:585) at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:501) at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:268) at java.lang.Thread.run(Thread.java:748) 1 error at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:292) ~[groovy-3.0.11.jar:3.0.11] at org.codehaus.groovy.control.ErrorCollector.addException(ErrorCollector.java:140) ~[groovy-3.0.11.jar:3.0.11] at org.codehaus.groovy.control.SourceUnit.addException(SourceUnit.java:309) ~[groovy-3.0.11.jar:3.0.11] at groovy.grape.GrabAnnotationTransformation.visit(GrabAnnotationTransformation.java:386) ~[groovy-3.0.11.jar:3.0.11] at org.codehaus.groovy.transform.ASTTransformationVisitor.lambda$addPhaseOperationsForGlobalTransforms$4(ASTTransformationVisitor.java:338) ~[groovy-3.0.11.jar:3.0.11] at org.codehaus.groovy.control.CompilationUnit$ISourceUnitOperation.doPhaseOperation(CompilationUnit.java:901) ~[groovy-3.0.11.jar:3.0.11] at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:671) ~[groovy-3.0.11.jar:3.0.11] at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:635) ~[groovy-3.0.11.jar:3.0.11] at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:389) ~[groovy-3.0.11.jar:3.0.11] at groovy.lang.GroovyClassLoader.lambda$parseClass$3(GroovyClassLoader.java:332) ~[groovy-3.0.11.jar:3.0.11] at org.codehaus.groovy.runtime.memoize.StampedCommonCache.compute(StampedCommonCache.java:163) ~[groovy-3.0.11.jar:3.0.11] at org.codehaus.groovy.runtime.memoize.StampedCommonCache.getAndPut(StampedCommonCache.java:154) ~[groovy-3.0.11.jar:3.0.11] at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:330) ~[groovy-3.0.11.jar:3.0.11] at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:314) ~[groovy-3.0.11.jar:3.0.11] at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:257) ~[groovy-3.0.11.jar:3.0.11] at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.getScriptClass(GroovyScriptEngineImpl.java:336) ~[groovy-jsr223-3.0.11.jar:3.0.11] at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.compile(GroovyScriptEngineImpl.java:181) ~[groovy-jsr223-3.0.11.jar:3.0.11] ... 7 more 2025-05-11 02:49:12,595 ERROR o.a.j.e.JSR223PostProcessor: Problem in JSR223 script, JSR223 后置处理程序 javax.script.ScriptException: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: General error during conversion: No suitable ClassLoader found for grab java.lang.RuntimeException: No suitable ClassLoader found for grab at groovy.grape.GrapeIvy.chooseClassLoader(GrapeIvy.groovy:179) at groovy.grape.GrapeIvy.grab(GrapeIvy.groovy:249) at groovy.grape.Grape$1.run(Grape.java:174) at groovy.grape.Grape$1.run(Grape.java:160) at java.security.AccessController.doPrivileged(Native Method) at groovy.grape.Grape.grab(Grape.java:160) at groovy.grape.GrabAnnotationTransformation.visit(GrabAnnotationTransformation.java:377) at org.codehaus.groovy.transform.ASTTransformationVisitor.lambda$addPhaseOperationsForGlobalTransforms$4(ASTTransformationVisitor.java:338) at org.codehaus.groovy.control.CompilationUnit$ISourceUnitOperation.doPhaseOperation(CompilationUnit.java:901) at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:671) at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:635) at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:389) at groovy.lang.GroovyClassLoader.lambda$parseClass$3(GroovyClassLoader.java:332) at org.codehaus.groovy.runtime.memoize.StampedCommonCache.compute(StampedCommonCache.java:163) at org.codehaus.groovy.runtime.memoize.StampedCommonCache.getAndPut(StampedCommonCache.java:154) at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:330) at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:314) at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:257) at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.getScriptClass(GroovyScriptEngineImpl.java:336) at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.compile(GroovyScriptEngineImpl.java:181) at org.apache.jmeter.util.JSR223TestElement.processFileOrScript(JSR223TestElement.java:211) at org.apache.jmeter.extractor.JSR223PostProcessor.process(JSR223PostProcessor.java:45) at org.apache.jmeter.threads.JMeterThread.runPostProcessors(JMeterThread.java:968) at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:585) at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:501) at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:268) at java.lang.Thread.run(Thread.java:748) 1 error at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.compile(GroovyScriptEngineImpl.java:183) ~[groovy-jsr223-3.0.11.jar:3.0.11] at org.apache.jmeter.util.JSR223TestElement.processFileOrScript(JSR223TestElement.java:211) ~[ApacheJMeter_core.jar:5.5] at org.apache.jmeter.extractor.JSR223PostProcessor.process(JSR223PostProcessor.java:45) ~[ApacheJMeter_components.jar:5.5] at org.apache.jmeter.threads.JMeterThread.runPostProcessors(JMeterThread.java:968) ~[ApacheJMeter_core.jar:5.5] at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:585) ~[ApacheJMeter_core.jar:5.5] at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:501) ~[ApacheJMeter_core.jar:5.5] at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:268) ~[ApacheJMeter_core.jar:5.5] at java.lang.Thread.run(Thread.java:748) ~[?:1.8.0_172] Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: General error during conversion: No suitable ClassLoader found for grab java.lang.RuntimeException: No suitable ClassLoader found for grab at groovy.grape.GrapeIvy.chooseClassLoader(GrapeIvy.groovy:179) at groovy.grape.GrapeIvy.grab(GrapeIvy.groovy:249) at groovy.grape.Grape$1.run(Grape.java:174) at groovy.grape.Grape$1.run(Grape.java:160) at java.security.AccessController.doPrivileged(Native Method) at groovy.grape.Grape.grab(Grape.java:160) at groovy.grape.GrabAnnotationTransformation.visit(GrabAnnotationTransformation.java:377) at org.codehaus.groovy.transform.ASTTransformationVisitor.lambda$addPhaseOperationsForGlobalTransforms$4(ASTTransformationVisitor.java:338) at org.codehaus.groovy.control.CompilationUnit$ISourceUnitOperation.doPhaseOperation(CompilationUnit.java:901) at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:671) at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:635) at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:389) at groovy.lang.GroovyClassLoader.lambda$parseClass$3(GroovyClassLoader.java:332) at org.codehaus.groovy.runtime.memoize.StampedCommonCache.compute(StampedCommonCache.java:163) at org.codehaus.groovy.runtime.memoize.StampedCommonCache.getAndPut(StampedCommonCache.java:154) at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:330) at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:314) at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:257) at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.getScriptClass(GroovyScriptEngineImpl.java:336) at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.compile(GroovyScriptEngineImpl.java:181) at org.apache.jmeter.util.JSR223TestElement.processFileOrScript(JSR223TestElement.java:211) at org.apache.jmeter.extractor.JSR223PostProcessor.process(JSR223PostProcessor.java:45) at org.apache.jmeter.threads.JMeterThread.runPostProcessors(JMeterThread.java:968) at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:585) at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:501) at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:268) at java.lang.Thread.run(Thread.java:748) 1 error at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:292) ~[groovy-3.0.11.jar:3.0.11] at org.codehaus.groovy.control.ErrorCollector.addException(ErrorCollector.java:140) ~[groovy-3.0.11.jar:3.0.11] at org.codehaus.groovy.control.SourceUnit.addException(SourceUnit.java:309) ~[groovy-3.0.11.jar:3.0.11] at groovy.grape.GrabAnnotationTransformation.visit(GrabAnnotationTransformation.java:386) ~[groovy-3.0.11.jar:3.0.11] at org.codehaus.groovy.transform.ASTTransformationVisitor.lambda$addPhaseOperationsForGlobalTransforms$4(ASTTransformationVisitor.java:338) ~[groovy-3.0.11.jar:3.0.11] at org.codehaus.groovy.control.CompilationUnit$ISourceUnitOperation.doPhaseOperation(CompilationUnit.java:901) ~[groovy-3.0.11.jar:3.0.11] at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:671) ~[groovy-3.0.11.jar:3.0.11] at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:635) ~[groovy-3.0.11.jar:3.0.11] at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:389) ~[groovy-3.0.11.jar:3.0.11] at groovy.lang.GroovyClassLoader.lambda$parseClass$3(GroovyClassLoader.java:332) ~[groovy-3.0.11.jar:3.0.11] at org.codehaus.groovy.runtime.memoize.StampedCommonCache.compute(StampedCommonCache.java:163) ~[groovy-3.0.11.jar:3.0.11] at org.codehaus.groovy.runtime.memoize.StampedCommonCache.getAndPut(StampedCommonCache.java:154) ~[groovy-3.0.11.jar:3.0.11] at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:330) ~[groovy-3.0.11.jar:3.0.11] at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:314) ~[groovy-3.0.11.jar:3.0.11] at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:257) ~[groovy-3.0.11.jar:3.0.11] at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.getScriptClass(GroovyScriptEngineImpl.java:336) ~[groovy-jsr223-3.0.11.jar:3.0.11] at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.compile(GroovyScriptEngineImpl.java:181) ~[groovy-jsr223-3.0.11.jar:3.0.11] ... 7 more 2025-05-11 02:49:15,800 ERROR o.a.j.e.JSR223PostProcessor: Problem in JSR223 script, JSR223 后置处理程序 javax.script.ScriptException: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: General error during conversion: No suitable ClassLoader found for grab java.lang.RuntimeException: No suitable ClassLoader found for grab at groovy.grape.GrapeIvy.chooseClassLoader(GrapeIvy.groovy:179) at groovy.grape.GrapeIvy.grab(GrapeIvy.groovy:249) at groovy.grape.Grape$1.run(Grape.java:174) at groovy.grape.Grape$1.run(Grape.java:160) at java.security.AccessController.doPrivileged(Native Method) at groovy.grape.Grape.grab(Grape.java:160) at groovy.grape.GrabAnnotationTransformation.visit(GrabAnnotationTransformation.java:377) at org.codehaus.groovy.transform.ASTTransformationVisitor.lambda$addPhaseOperationsForGlobalTransforms$4(ASTTransformationVisitor.java:338) at org.codehaus.groovy.control.CompilationUnit$ISourceUnitOperation.doPhaseOperation(CompilationUnit.java:901) at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:671) at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:635) at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:389) at groovy.lang.GroovyClassLoader.lambda$parseClass$3(GroovyClassLoader.java:332) at org.codehaus.groovy.runtime.memoize.StampedCommonCache.compute(StampedCommonCache.java:163) at org.codehaus.groovy.runtime.memoize.StampedCommonCache.getAndPut(StampedCommonCache.java:154) at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:330) at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:314) at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:257) at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.getScriptClass(GroovyScriptEngineImpl.java:336) at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.compile(GroovyScriptEngineImpl.java:181) at org.apache.jmeter.util.JSR223TestElement.processFileOrScript(JSR223TestElement.java:211) at org.apache.jmeter.extractor.JSR223PostProcessor.process(JSR223PostProcessor.java:45) at org.apache.jmeter.threads.JMeterThread.runPostProcessors(JMeterThread.java:968) at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:585) at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:501) at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:268) at java.lang.Thread.run(Thread.java:748) 1 error at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.compile(GroovyScriptEngineImpl.java:183) ~[groovy-jsr223-3.0.11.jar:3.0.11] at org.apache.jmeter.util.JSR223TestElement.processFileOrScript(JSR223TestElement.java:211) ~[ApacheJMeter_core.jar:5.5] at org.apache.jmeter.extractor.JSR223PostProcessor.process(JSR223PostProcessor.java:45) ~[ApacheJMeter_components.jar:5.5] at org.apache.jmeter.threads.JMeterThread.runPostProcessors(JMeterThread.java:968) ~[ApacheJMeter_core.jar:5.5] at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:585) ~[ApacheJMeter_core.jar:5.5] at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:501) ~[ApacheJMeter_core.jar:5.5] at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:268) ~[ApacheJMeter_core.jar:5.5] at java.lang.Thread.run(Thread.java:748) ~[?:1.8.0_172] Caused by: org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed: General error during conversion: No suitable ClassLoader found for grab java.lang.RuntimeException: No suitable ClassLoader found for grab at groovy.grape.GrapeIvy.chooseClassLoader(GrapeIvy.groovy:179) at groovy.grape.GrapeIvy.grab(GrapeIvy.groovy:249) at groovy.grape.Grape$1.run(Grape.java:174) at groovy.grape.Grape$1.run(Grape.java:160) at java.security.AccessController.doPrivileged(Native Method) at groovy.grape.Grape.grab(Grape.java:160) at groovy.grape.GrabAnnotationTransformation.visit(GrabAnnotationTransformation.java:377) at org.codehaus.groovy.transform.ASTTransformationVisitor.lambda$addPhaseOperationsForGlobalTransforms$4(ASTTransformationVisitor.java:338) at org.codehaus.groovy.control.CompilationUnit$ISourceUnitOperation.doPhaseOperation(CompilationUnit.java:901) at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:671) at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:635) at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:389) at groovy.lang.GroovyClassLoader.lambda$parseClass$3(GroovyClassLoader.java:332) at org.codehaus.groovy.runtime.memoize.StampedCommonCache.compute(StampedCommonCache.java:163) at org.codehaus.groovy.runtime.memoize.StampedCommonCache.getAndPut(StampedCommonCache.java:154) at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:330) at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:314) at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:257) at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.getScriptClass(GroovyScriptEngineImpl.java:336) at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.compile(GroovyScriptEngineImpl.java:181) at org.apache.jmeter.util.JSR223TestElement.processFileOrScript(JSR223TestElement.java:211) at org.apache.jmeter.extractor.JSR223PostProcessor.process(JSR223PostProcessor.java:45) at org.apache.jmeter.threads.JMeterThread.runPostProcessors(JMeterThread.java:968) at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:585) at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:501) at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:268) at java.lang.Thread.run(Thread.java:748) 1 error at org.codehaus.groovy.control.ErrorCollector.failIfErrors(ErrorCollector.java:292) ~[groovy-3.0.11.jar:3.0.11] at org.codehaus.groovy.control.ErrorCollector.addException(ErrorCollector.java:140) ~[groovy-3.0.11.jar:3.0.11] at org.codehaus.groovy.control.SourceUnit.addException(SourceUnit.java:309) ~[groovy-3.0.11.jar:3.0.11] at groovy.grape.GrabAnnotationTransformation.visit(GrabAnnotationTransformation.java:386) ~[groovy-3.0.11.jar:3.0.11] at org.codehaus.groovy.transform.ASTTransformationVisitor.lambda$addPhaseOperationsForGlobalTransforms$4(ASTTransformationVisitor.java:338) ~[groovy-3.0.11.jar:3.0.11] at org.codehaus.groovy.control.CompilationUnit$ISourceUnitOperation.doPhaseOperation(CompilationUnit.java:901) ~[groovy-3.0.11.jar:3.0.11] at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:671) ~[groovy-3.0.11.jar:3.0.11] at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:635) ~[groovy-3.0.11.jar:3.0.11] at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:389) ~[groovy-3.0.11.jar:3.0.11] at groovy.lang.GroovyClassLoader.lambda$parseClass$3(GroovyClassLoader.java:332) ~[groovy-3.0.11.jar:3.0.11] at org.codehaus.groovy.runtime.memoize.StampedCommonCache.compute(StampedCommonCache.java:163) ~[groovy-3.0.11.jar:3.0.11] at org.codehaus.groovy.runtime.memoize.StampedCommonCache.getAndPut(StampedCommonCache.java:154) ~[groovy-3.0.11.jar:3.0.11] at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:330) ~[groovy-3.0.11.jar:3.0.11] at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:314) ~[groovy-3.0.11.jar:3.0.11] at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:257) ~[groovy-3.0.11.jar:3.0.11] at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.getScriptClass(GroovyScriptEngineImpl.java:336) ~[groovy-jsr223-3.0.11.jar:3.0.11] at org.codehaus.groovy.jsr223.GroovyScriptEngineImpl.compile(GroovyScriptEngineImpl.java:181) ~[groovy-jsr223-3.0.11.jar:3.0.11] ... 7 more 2025-05-11 02:49:15,802 INFO o.a.j.t.JMeterThread: Stop Thread seen for thread 线程组 1-1, reason: org.apache.jorphan.util.JMeterStopThreadException: End of file:D:/项目/1、联赢激光/SW切换/外购件模型/外购件下载 - 副本.csv detected for CSV DataSet:CSV 数据文件设置 configured with stopThread:true, recycle:false 2025-05-11 02:49:15,802 INFO o.a.j.t.JMeterThread: Thread finished: 线程组 1-1 2025-05-11 02:49:15,803 INFO o.a.j.e.StandardJMeterEngine: Notifying test listeners of end of test 2025-05-11 02:49:15,804 INFO o.a.j.s.FileServer: Close: D:/项目/1、联赢激光/SW切换/外购件模型/外购件下载 - 副本.csv 2025-05-11 02:49:15,807 INFO o.a.j.g.u.JMeterMenuBar: setRunning(false, *local*)
最新发布
05-12
<think>好的,我现在需要帮助用户解决JMeter中JSR223脚本遇到的NoClassDefFoundError和MultipleCompilationErrorsException错误。首先,我应该回顾用户提供的引用内容,看看有没有相关的信息可以借鉴。 用户提到的错误有两个:一个是NoClassDefFoundError,涉及org/apache/ivy/util/MessageLogger;另一个是MultipleCompilationErrorsException,提示找不到合适的ClassLoader来执行grab。我需要分别分析这两个错误的原因,然后找到解决方法。 首先看第一个错误,NoClassDefFoundError: MessageLogger。根据引用中的其他类似错误,比如引用[2]中的Jedis类找不到,可能是因为缺少相关的JAR包。Apache Ivy是用于依赖管理的库,可能在JMeter的JSR223脚本中使用了Grape来管理依赖,而Grape依赖于Ivy。所以用户可能需要将Ivy的JAR包添加到JMeter的lib目录下,或者确保相关的依赖被正确引入。 第二个错误是MultipleCompilationErrorsException,提示没有合适的ClassLoader来执行grab。这可能是因为在JSR223脚本中使用了@Grab注解来获取依赖,但JMeter的ClassLoader不支持这种方式。引用[5]中提到了添加依赖的方法,但这里可能需要另一种方式,比如手动添加所需的库,或者调整脚本的加载方式。 接下来,我需要考虑用户可能没有正确配置JMeter的依赖路径。例如,在引用[3]中,用户添加了插件到lib/ext目录,这里可能需要类似的步骤,把Ivy相关的JAR文件放到JMeter的lib或lib/ext目录下。此外,可能需要检查JMeter使用的Java版本是否兼容这些库,比如Java 8或更高版本。 另外,用户可能在脚本中使用了GroovyGrape功能,但JMeter的环境可能不允许自动下载依赖。这时候,解决方案可能是手动下载所需的依赖,并将它们添加到JMeter的classpath中,或者避免使用@Grab,改为直接引入需要的JAR包。 可能的解决步骤包括: 1. 下载Apache Ivy的JAR包并添加到JMeter的lib目录。 2. 确保JMeter使用的Groovy版本与Ivy兼容。 3. 修改JSR223脚本,避免使用@Grab注解,改为手动管理依赖。 4. 检查JMeter的类路径配置,确保所有需要的库都被正确加载。 5. 更新JMeter或相关插件到最新版本,以解决可能的兼容性问题。 需要验证这些步骤是否正确,比如用户是否已经正确安装了Ivy,或者是否存在版本冲突。此外,用户可能需要检查脚本中是否有语法错误,或者是否在正确的后置处理器中使用了JSR223脚本。 最后,根据用户提供的引用中的解决方案,比如引用[4]和引用[5]中提到的添加依赖的方法,可能需要用户手动添加所需的依赖库到JMeter的环境中,而不是依赖Grape自动下载。这样可以避免ClassLoader的问题,并确保所有需要的类都能被正确加载。</think>### JMeter JSR223脚本错误解决方案 #### 一、NoClassDefFoundError: org/apache/ivy/util/MessageLogger **原因分析** 该错误表明JMeter运行时缺少Apache Ivy库[^3]。JSR223脚本中使用`@Grab`注解时,会通过Ivy实现依赖管理。若未正确引入Ivy相关依赖,会导致类加载失败。 **解决步骤** 1. 下载Apache Ivy核心库: - 访问[Maven仓库](https://mvnrepository.com/artifact/org.apache.ivy/ivy)获取`ivy-2.5.0.jar` - 将JAR文件放入JMeter的`lib/ext`目录 2. 验证Groovy版本: - 确保JMeter的`lib`目录下Groovy版本≥2.4(推荐使用`groovy-3.0.9.jar`) 3. 重启JMeter生效 #### 二、MultipleCompilationErrorsException: No suitable ClassLoader found for grab **根本原因** JMeter的ClassLoader无法处理`@Grab`注解的依赖解析机制,常见于未启用Grape支持或安全策略限制[^5]。 **两种解决方案** **方案1:手动依赖管理(推荐)** 1. 在脚本中移除`@Grab`注解 2. 手动下载所需依赖库(如通过Maven仓库) 3. 将依赖JAR文件放入JMeter的`lib`目录 4. 脚本示例: ```groovy import org.apache.commons.lang3.StringUtils StringUtils.trim(" hello ") // 直接使用已安装的库 ``` **方案2:启用Grape支持** 1. 创建`grapeConfig.xml`文件于`~/.groovy/`目录: ```xml <ivysettings> <settings defaultResolver="download"/> <resolvers> <chain name="download"> <ibiblio name="mavenCentral" root="https://repo1.maven.org/maven2/" m2compatible="true"/> </chain> </resolvers> </ivysettings> ``` 2. 在JMeter启动脚本中添加参数: ```bash JVM_ARGS="-Dgroovy.grape.report.downloads=true -Dgrape.root=~/.groovy/grapes" jmeter ``` 3. 脚本中显式声明Grape: ```groovy @Grab('org.apache.commons:commons-lang3:3.12.0') import org.apache.commons.lang3.StringUtils ``` #### 三、验证配置有效性 1. 创建测试脚本: ```groovy log.info("Classpath: " + org.codehaus.groovy.runtime.InvokerHelper.getClassLoader().getURLs()) try { new org.apache.ivy.util.MessageLogger() log.info("Ivy库加载成功") } catch(e) { log.error("加载失败", e) } ``` 2. 查看JMeter日志确认无错误输出
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值