Groovy 随机密码 找不到这样的字段:字段 java.lang.String 大小
Groovy random password No such field found: field java.lang.String size
我运行为了创建一个包含字母数字和特殊字符的随机密码
randomPasswordCreation = random_password_creation(14)
println "Random pass: $randomPasswordCreation"
def random_password_creation(pass_length ){
def special = ['!','@','#','$','%','&']
def pool = ['a'..'z','A'..'Z',0..9,'_'].flatten().plus(special);
Random rand = new Random(System.currentTimeMillis());
def passChars = (0..pass_length - 1).collect { pool[rand.nextInt(pool.size)] };
def specialChar = special[rand.nextInt(special.size)]
passChars[rand.nextInt(passChars.size)] = specialChar
def PASSWORD = passChars.join();
return PASSWORD
}
我收到的错误信息
org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: No such field found: field java.lang.String size
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.unclassifiedField(SandboxInterceptor.java:426)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:410)
at com.cloudbees.groovy.cps.CpsDefaultGroovyMethods.collect(CpsDefaultGroovyMethods:3170)
at com.cloudbees.groovy.cps.CpsDefaultGroovyMethods.collect(CpsDefaultGroovyMethods:3140)
at WorkflowScript.run(WorkflowScript:1922)
您显示的代码至少有两个问题:
- 你访问
size
因为它是一个字段,但它是一个方法,所以它应该是 size()
而不是。
passChars.join()
缺少分隔符参数,例如''
为空字符串。
根据错误堆栈跟踪,我假设您运行将此代码作为 Jenkins 管道的一部分。请记住,Jenkins 以更严格的方式执行 Groovy。例如,虽然常规动态 Groovy 可以处理 .size
而不是 .size()
之类的事情,但 WorkflowScript 执行程序要求 Groovy 代码没有此类错误。
我运行为了创建一个包含字母数字和特殊字符的随机密码
randomPasswordCreation = random_password_creation(14)
println "Random pass: $randomPasswordCreation"
def random_password_creation(pass_length ){
def special = ['!','@','#','$','%','&']
def pool = ['a'..'z','A'..'Z',0..9,'_'].flatten().plus(special);
Random rand = new Random(System.currentTimeMillis());
def passChars = (0..pass_length - 1).collect { pool[rand.nextInt(pool.size)] };
def specialChar = special[rand.nextInt(special.size)]
passChars[rand.nextInt(passChars.size)] = specialChar
def PASSWORD = passChars.join();
return PASSWORD
}
我收到的错误信息
org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: No such field found: field java.lang.String size
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.unclassifiedField(SandboxInterceptor.java:426)
at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:410)
at com.cloudbees.groovy.cps.CpsDefaultGroovyMethods.collect(CpsDefaultGroovyMethods:3170)
at com.cloudbees.groovy.cps.CpsDefaultGroovyMethods.collect(CpsDefaultGroovyMethods:3140)
at WorkflowScript.run(WorkflowScript:1922)
您显示的代码至少有两个问题:
- 你访问
size
因为它是一个字段,但它是一个方法,所以它应该是size()
而不是。 passChars.join()
缺少分隔符参数,例如''
为空字符串。
根据错误堆栈跟踪,我假设您运行将此代码作为 Jenkins 管道的一部分。请记住,Jenkins 以更严格的方式执行 Groovy。例如,虽然常规动态 Groovy 可以处理 .size
而不是 .size()
之类的事情,但 WorkflowScript 执行程序要求 Groovy 代码没有此类错误。