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.
you should use the Long class:
def min = Long.valueOf('1')
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With