簡體   English   中英

如何解決“java.lang.NullPointerException:無法調用方法 startsWith()”?

[英]How to resolve "java.lang.NullPointerException: Cannot invoke method startsWith()"?

我是 groovy 的新手。我正在為 Jenkins 管道編寫一個共享庫。 我正面臨這個java.lang.NullPointerException異常。 下面是我的代碼:

def call(Map config = [:], env) {
    
            pipeline {
                defaults = [
                        'pipelineStrategy'          : 'deployOnly',
                        'buildSystem'               : 'maven'
                ] + config
        
                environment {
                    BRANCH_NAME = "${GIT_BRANCH.split("/")[1]}"
                }
                boolean autoDeploy = false;
                if (env.BRANCH_NAME.equals('master') || env.BRANCH_NAME.startsWith('hotfix-')){
                    autoDeploy = true;
                }
        }
}

以下是我的 Jenkins 構建日志:

java.lang.NullPointerException: Cannot invoke method startsWith() on null object
    at org.codehaus.groovy.runtime.NullObject.invokeMethod(NullObject.java:91)
    at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:48)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
    at org.codehaus.groovy.runtime.callsite.NullCallSite.call(NullCallSite.java:35)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
    at com.cloudbees.groovy.cps.sandbox.DefaultInvoker.methodCall(DefaultInvoker.java:20)
    at pipelineStrategy.call(pipelineStrategy.groovy:21)

您發布的代碼中唯一的 startsWith() 位於

env.BRANCH_NAME.startsWith('hotfix-')

你被告知有一個 null object。這意味着

env.BRANCH_NAME

是 null。您需要考慮為什么或如何處理這種情況。 一種方法可能是使用

String.valueOf(env.BRANCH_NAME).startsWith('hotfix-')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM