我正在编写jenkins管道,我需要在Long值中转换String参数。
我使用过Long.valueOf,Long.parseLong。我收到此错误消息:
hudson.remoting.ProxyException:groovy.lang.MissingMethodException:没有方法签名:java.lang.Class.parseLong()适用于参数类型:(java.lang.String)values:[8899986991733205013]
或者这个:
hudson.remoting.ProxyException:groovy.lang.MissingMethodException:没有方法签名:java.lang.Class.valueOf()适用于参数类型:(java.lang.String)values:[8899986991733205013]
我的代码:
def min = Long.valueOf(params.paymentid) + Integer.valueOf(params.begin)
def max = Long.valueOf(params.paymentid) + Integer.valueOf(params.end)
有什么想法吗? 感谢。
答案 0 :(得分:5)
你应该使用Long类:
def min = Long.valueOf('1')
答案 1 :(得分:2)
我在管理控制台中尝试了这个解决方案:
print(params.paymendid.toLong())
它奏效了。在我的管道上它没有用,我收到了这个错误:
org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: 脚本不允许使用staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods toLong java.lang.String中
但是这个解决方案:https://stackoverflow.com/a/39412951/8357778有效。
我应该禁用沙盒。
答案 2 :(得分:2)
以下转换也可以。
Long paymentId = params.paymentid as Long
println paymentId
如果字符串无效,您可以将此块放在 try..catch 块中以处理任何类型转换异常。