Reputation: 319
I'm coding a jenkins pipeline and I need to convert a String parameter in a Long value.
I have used Long.valueOf, Long.parseLong. I get this error message :
hudson.remoting.ProxyException: groovy.lang.MissingMethodException: No signature of method: java.lang.Class.parseLong() is applicable for argument types: (java.lang.String) values: [8899986991733205013]
or this :
hudson.remoting.ProxyException: groovy.lang.MissingMethodException: No signature of method: java.lang.Class.valueOf() is applicable for argument types: (java.lang.String) values: [8899986991733205013]
my code :
def min = Long.valueOf(params.paymentid) + Integer.valueOf(params.begin)
def max = Long.valueOf(params.paymentid) + Integer.valueOf(params.end)
Any idea ? Thanks.
Upvotes: 7
Views: 37632
Reputation: 2622
The following conversion will also work.
Long paymentId = params.paymentid as Long
println paymentId
You can put this block inside try..catch block to handle any type casting exception if the string is invalid.
Upvotes: 9
Reputation: 319
I tried this solution in admin console :
print(params.paymendid.toLong())
it worked. On my pipeline it didn't work, i got this error :
org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Scripts not permitted to use staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods toLong java.lang.String
but this solution : https://stackoverflow.com/a/39412951/8357778 works.
I should disable sandbox.
Upvotes: 5