Groovy. List

本文介绍了Groovy中定义和操作列表的简便方法,包括如何创建ArrayList和LinkedList,以及Groovy特有的语法特性,如使用负数索引、<<操作符进行追加、简洁的索引访问和子列表截取等。

在Groovy中定义一个集合比Java中更简单,单和dart语法好像是一样的:

 def list = [1, 2, 3]

 我们可以使用list.class 的方式打印出什么类型,它是个ArrayList,这个在官网文档有说明:

 在Java中我们可以一个集合只能存储一种类型 比如String,Integer等 但是在Groovy  你可以存储任意的类型

 def list = ["1", 2, true,3.2]

但可能很多人说我需要要创建一个LinkedList  这个在Groovy也简单 要使用as关键字

def linkedList = [2, 3, 4] as LinkedList

除了这种方式 Groovy还提供给了另外一种方式:

LinkedList otherLinked = [3, 4, 5]   

如果要获取集合中某个值,在Java中一般都是get(position)  在Groovy比Java语法更简单,这点Groovy和dart一样

class ListStudy {
    static void main(String[] args){
        def list = ["1", 2, true,3.2]
        println(list[1])
    }
}

如果获取的数超过了集合的长度那么就返回null,这点很好的把异常屏蔽了, 比如上面的list集合个数为4 如果我这样

list[5]那么在Java中肯定报错。但是在Groovy中就返回null,

更神奇的是list[-1]。这[]还能传递一个负数,当是负数的数据是从list你着获取 

在list集合中如果想往集合末尾添加一个元素的话 都不用add。直接用<<操作符

class ListStudy {
    static void main(String[] args){
        def list = ["1", 2, true,3.2]
        list << 'e'
        println(list)
    }
}

如果想重新对list某个位置上赋值

class ListStudy {
    static void main(String[] args){
        def list = ["1", 2, true,3.2]
        list << 'e'
        list[0] = 100;
        println(list)
    }
}

上面就是把第一个位置的字符串1变成了100

如果想获取某个集合中的某一段子元素

class ListStudy {
    static void main(String[] args){
        def list = ["1", 2, true,"e"]
        def newList = list[1,3]
        println(newList)
    }
}

上面是获取第二个和第四个的值组成一个新的List集合

如果想获取1到3的值. start..end

class ListStudy {
    static void main(String[] args){
        def list = ["1", 2, true,"e"]
        def newList = list[1..3]
        println(newList)
    }
}

着newList新集合就是[2,true,"e"]

List集合中嵌套集合

class ListStudy {
    static void main(String[] args){
        def multi = [[0, 1], [2, 3]]
        println(multi[1][0])
    }
}

上面是否访问集合中的第二个集合 取第一个元素

 

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
/* * Copyright (c) Huawei Technologies Co., Ltd. 2022-2022. All rights reserved. */ package com.huawei.it.elogic.formula.helper import com.huawei.it.elogic.formula.constants.GroovyEvalConstant import com.huawei.it.publicsaas.framework.context.ContextUtils import org.codehaus.groovy.ast.ASTNode import org.codehaus.groovy.ast.expr.ArgumentListExpression import org.codehaus.groovy.ast.expr.BinaryExpression import org.codehaus.groovy.ast.expr.ConstantExpression import org.codehaus.groovy.ast.expr.Expression import org.codehaus.groovy.ast.expr.GStringExpression import org.codehaus.groovy.ast.expr.ListExpression import org.codehaus.groovy.ast.expr.MethodCallExpression import org.codehaus.groovy.ast.expr.TernaryExpression import org.codehaus.groovy.ast.expr.TupleExpression import org.codehaus.groovy.control.CompilePhase import org.codehaus.groovy.control.SourceUnit import org.codehaus.groovy.transform.ASTTransformation import org.codehaus.groovy.transform.GroovyASTTransformation /** * groovy的AST树转化,适配fel * * @since 2024/2/22 */ @GroovyASTTransformation(phase = CompilePhase.SEMANTIC_ANALYSIS) class DollarSignTransformer implements ASTTransformation { private static String CONSTANTEXPRESSION_METADATAMAP_KEY = "_IS_STRING" private static List<Class> NEED_CHANGE_PEXRS = Arrays.asList( BinaryExpression.class, MethodCallExpression.class, TernaryExpression.class, ArgumentListExpression.class ) @Override void visit(ASTNode[] nodes, SourceUnit source) { if (!GroovyEvalConstant.FIXED_GROOVY_VALUE.equals(ContextUtils.getValue(GroovyEvalConstant.FIXED_GROOVY_KEY))) { return } nodes.each { node -> { node.statementBlock.statements.each { statement -> { Expression expr = statement.expression if (expr instanceof GStringExpression) { statement.expression = getStringExprFromGStringExpr(expr) } else if (NEED_CHANGE_PEXRS.contains(expr.getClass())) { statement.expression = traverseExpr(expr) } } } } } } /** * 遍历expression,有子expression则递归处理 * @param expr expr */ Expression traverseExpr(Expression expr) { List<Expression> subExprs = getSubExprs(expr) for (int i = 0; i < subExprs.size(); i++) { Expression subExpr = subExprs[i] if (subExpr instanceof GStringExpression) { subExprs[i] = getStringExprFromGStringExpr(subExpr) } else if (NEED_CHANGE_PEXRS.contains(subExpr.getClass())) { subExprs[i] = traverseExpr(subExpr) } } expr = setSubExprs(expr, subExprs) return expr } /** * 将需要修改的expression的所有子expression组装成List返回 * @param exprs * @return */ private List<Expression> getSubExprs(Expression expr) { List<Expression> subExprs = new ArrayList<>() if (expr instanceof BinaryExpression) { subExprs.add(expr.leftExpression) subExprs.add(expr.rightExpression) } else if (expr instanceof MethodCallExpression) { subExprs = expr.arguments.expressions } else if (expr instanceof TernaryExpression) { subExprs.add(expr.booleanExpression) subExprs.add(expr.trueExpression) subExprs.add(expr.falseExpression) } else if (expr instanceof ListExpression) { subExprs = expr.expressions } return subExprs } /** * 将需要修改的expression的所有子expression组装成List返回 * @param exprs expr * @param newSubExprs 转化后的expression * @return 新的expression */ private Expression setSubExprs(Expression expr, List<Expression> newSubExprs) { if (expr instanceof BinaryExpression) { expr.leftExpression = newSubExprs[0] expr.rightExpression = newSubExprs[1] } else if (expr instanceof MethodCallExpression) { expr.setArguments(new TupleExpression(newSubExprs)) } else if (expr instanceof TernaryExpression) { expr = new TernaryExpression(newSubExprs[0], newSubExprs[1], newSubExprs[2]) } else if (expr instanceof ArgumentListExpression) { expr = new ArgumentListExpression(newSubExprs) } return expr } /** * GStringExpression转ConstantExpression,即$引用串转字符串 * * @param gStringExpr gStringExpr * @return ConstantExpression */ private ConstantExpression getStringExprFromGStringExpr(GStringExpression gStringExpr) { def constantExpr = new ConstantExpression(gStringExpr.verbatimText) constantExpr.lineNumber = gStringExpr.lineNumber constantExpr.columnNumber = gStringExpr.columnNumber constantExpr.lastLineNumber = gStringExpr.lastLineNumber constantExpr.lastColumnNumber = gStringExpr.lastColumnNumber Map map = new LinkedHashMap() map.put(CONSTANTEXPRESSION_METADATAMAP_KEY, true) constantExpr.metaDataMap = map return constantExpr } }
最新发布
09-06
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值