我有下一个 Groovy 代码,我尝试在 Jenkins Pipeline 中运行:
@Grab('io.github.http-builder-ng:http-builder-ng-core:1.0.3')
import static groovyx.net.http.HttpBuilder.configure
def astros = configure {
request.uri = 'http://api.open-notify.org/astros.json'
}.get()
println "There are ${astros.number} astronauts in space right now."
astros.people.each { p->
println " - ${p.name} (${p.craft})"
}
但是每次我收到 java.lang.NullPointerException: Cannot invoke method get() on null object
错误。
当我从桌面运行它时,一切都按预期运行:
There are 6 astronauts in space right now.
在 Jenkins 中:
There are null astronauts in space right now.
调试输出:
<groovyx.net.http.UriBuilder$Basic@4bc2413c scheme=http port=-1 host=api.open-notify.org path=/astros.json query=[:] fragment=null userInfo=null parent=groovyx.net.http.UriBuilder$ThreadSafe@69c6847a useRawValues=null>
我应该怎么做才能让它发挥作用?
如果对象为 null,object.get() 会给出 NullPointerException,因此在调用对象的任何方法之前需要检查对象是否为 null。因此,另一种方法可以检查 astros != null
是否存在,然后在 if block 内调用 .get()
。
我是一名优秀的程序员,十分优秀!