2017-12-15 9 views
0

jenkins 파이프 라인을 코딩 중이므로 Long 값에서 String 매개 변수를 변환해야합니다.Groovy에서 Long으로 문자열 변환

Long.valueOf, Long.parseLong을 사용했습니다.

hudson.remoting.ProxyException : groovy.lang.MissingMethodException : 방법 없음 서명 : java.lang.Class.parseLong()는 인수 유형에 대한 적용 :이 오류 메시지 (java.lang.String의) 값 : 8백89경9천9백86조9천9백17억3천3백20만5천13]

하거나 :

hudson.remoting.ProxyException : groovy.lang.MissingMethodException : 아니오 서명 방법 : java.lang.Class.valueOf는()에 적용 인수 유형 : (java.lang.String) 값 : [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의 유형은 무엇입니까? - 모든 문자열 ?? – JasonM1

+1

예제 코드에서'Long' 대신'Integer'을 사용합니다.하지만 질문에서 "Long.valueOf"와 "Long.parseLong"을 참조하십시오 ... – bdkosher

+0

예 여러 가지를 시도하고 시도해 보았습니다 ,하지만 Long.valuOf는 나에게 이렇게 알려줍니다 : org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException : staticMethod 사용이 허용되지 않은 스크립트 java.lang.Long valueOf java.lang.String –

답변

1

을 내가 관리 콘솔에서이 솔루션을 시도했다. 그것이 작동하지 않았다 내 파이프 라인에, 나는이 오류가 발생했습니다 :

org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException : 스크립트되지 StaticMethod를 org.codehaus.groovy.runtime.DefaultGroovyMethods toLong를 사용하도록 허용 java.lang.String

그러나이 해결책은 https://stackoverflow.com/a/39412951/8357778입니다.

샌드 박스를 비활성화해야합니다.

2

당신이 긴 클래스를 사용해야합니다 : 그것은 일

print(params.paymendid.toLong()) 

:

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

내 붙여 넣기가 잘못되었습니다. 죄송합니다. 시도했지만 오류가 있습니다 : org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException : 스크립트가 staticMethod를 사용하도록 허용되지 않았습니다. java.lang.Long valueOf java.lang.String –

0

다음 변환도 작동합니다.

Long paymentId = params.paymentid as Long 
println paymentId 

당신은 문자열이 유효하지 않은 경우 어떤 타입 캐스팅 예외을 처리하기 위해 시켜 try..catch 블록 내부에이 블록을 넣을 수 있습니다.