2017-12-15 1 views
0

Ich kodiere eine jenkins-Pipeline und ich muss einen String-Parameter in einen Long-Wert konvertieren.Groovy String in Long konvertieren

Ich habe Long.valueOf, Long.parseLong verwendet. Ich bekomme diese Fehlermeldung:

hudson.remoting.ProxyException: groovy.lang.MissingMethodException: Keine Unterschrift des Verfahrens: java.lang.Class.parseLong() ist für Argument-Typen: (java.lang.String) Werte: [8899986991733205013]

oder dieses:

hudson.remoting.ProxyException: groovy.lang.MissingMethodException: Keine Signatur der Methode: java.lang.Class.valueOf() ist für Argumenttypen: (java.lang.String) Werte: [8899986991733205013]

mein Code:

def min = Long.valueOf(params.paymentid) + Integer.valueOf(params.begin) 
    def max = Long.valueOf(params.paymentid) + Integer.valueOf(params.end) 

Jede Idee? Danke.

+1

Long.parseLong (String) erwartet ein String-Argument. Was ist der Typ von params.begin, params.end und params.pansionid - alle String ?? – JasonM1

+1

Sie haben "Integer" anstelle von "Long" in Ihrem Beispielcode, aber in Ihrer Frage verweisen Sie auf "Long.valueOf" und "Long.parseLong" ... – bdkosher

+0

Ja, ich habe verschiedene Dinge ausprobiert und ich habe einen meiner Versuche eingefügt , aber Long.valuOf sagt mir dies: org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Scripts nicht erlaubt, staticMethod zu verwenden java.lang.Long valueOf java.lang.String –

Antwort

1

habe ich versucht, diese Lösung in Admin-Konsole:

print(params.paymendid.toLong()) 

es funktionierte. Auf meiner Pipeline, es nicht funktioniert habe ich diesen Fehler:

org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Scripts nicht gestattet Static org.codehaus.groovy.runtime.DefaultGroovyMethods Tolong zu verwenden java.lang.String

aber diese Lösung: https://stackoverflow.com/a/39412951/8357778 funktioniert.

Ich sollte Sandbox deaktivieren.

2

Sie die Lange-Klasse verwenden sollte:

def min = Long.valueOf('1') 
+0

Sorry meine Paste ist schlecht, aber ich habe es versucht und der Fehler war: org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Skripte nicht erlaubt, staticMethod java.lang.Long valueOf java.lang.String zu verwenden –

0

Die folgende Konvertierung funktioniert auch.

Long paymentId = params.paymentid as Long 
println paymentId 

können Sie diesen Block innerhalb setzen try..catch Block jede type casting Ausnahme zu behandeln, wenn die Zeichenfolge ungültig ist.

Verwandte Themen