Groovy将字符串转换为长整型

6

我正在编写一个Jenkins流水线,需要将字符串参数转换为长整型。

我已经尝试使用Long.valueOf和Long.parseLong。但是我收到了以下错误信息:

hudson.remoting.ProxyException: groovy.lang.MissingMethodException: No signature of method: java.lang.Class.parseLong() is applicable for argument types: (java.lang.String) values: [8899986991733205013]

或者这个错误信息:

hudson.remoting.ProxyException: groovy.lang.MissingMethodException: No signature of method: java.lang.Class.valueOf() is applicable for argument types: (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)

有任何想法吗? 谢谢。

1
Long.parseLong(String) 需要一个字符串参数。params.begin、params.end 和 params.paymentid 的类型都是 String 吗? - CodeMonkey
1
你的示例代码中使用了 Integer,但在问题中提到了 "Long.valueOf" 和 "Long.parseLong"。 - bdkosher
是的,我尝试了不同的方法并粘贴了其中一种尝试,但 Long.valueOf 告诉我这个:org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: 脚本不允许使用 staticMethod java.lang.Long valueOf java.lang.String。 - Franck Cussac
@JasonM1 param.begin、end和paymentid都是字符串。 - Franck Cussac
3个回答

14

你应该使用Long类:

def min = Long.valueOf('1')

1
抱歉,我的粘贴不好,但我尝试了一下,错误是: org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: 脚本不允许使用静态方法 java.lang.Long valueOf java.lang.String。 - Franck Cussac

8
以下的转换也可以使用。
Long paymentId = params.paymentid as Long
println paymentId

如果字符串无效,您可以将此块放在 try..catch 块中来处理任何 类型转换异常


5

我在管理控制台尝试了这个解决方案:

print(params.paymendid.toLong())

它已经起作用了。但是在我的流水线上,它没有起作用,我得到了这个错误:

org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: 脚本不允许使用静态方法   org.codehaus.groovy.runtime.DefaultGroovyMethods toLong   java.lang.String

但是这个解决方案:https://dev59.com/eFoT5IYBdhLWcg3wrRKE#39412951可行。

我应该禁用沙盒。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接