面对空指针异常:无法在空对象上调用方法 firstMethod():Grails 3.2.10

Posted

技术标签:

【中文标题】面对空指针异常:无法在空对象上调用方法 firstMethod():Grails 3.2.10【英文标题】:Facing Null Pointer Exception: Cannot invoke method firstMethod() on null Object : Grails 3.2.10 【发布时间】:2017-11-06 21:42:50 【问题描述】:

我在 Grails 3.2.10 版本中写了一个简单的 rest-api 控制器。下面是我的系统配置。创建的应用也是rest-api profile。

Grails 版本:3.2.10 Groovy 版本:2.4.10 JVM版本:1.8.0_131

编写的示例代码如下: 控制器:

package mydevpath

import grails.rest.*
import grails.converters.*

class LoginController 
static responseFormats = ['json', 'xml']

def index() 
        def loginService
        def val = loginService.firstMethod()

        render 'hello World' + val
     
   

服务:` 包 mydevpath

import grails.transaction.Transactional

 @Transactional
 class LoginService 
    static scope = "prototype"

     def firstMethod()
        return 'From Service'
  

在运行并点击 URL 时,我面临以下错误。

NullPointerException occurred when processing request
: [POST] /login
Cannot invoke method firstMethod() on null object. Stacktrace follows:

java.lang.reflect.InvocationTargetException: null
        at org.grails.core.DefaultGrailsControllerClass$ReflectionInvoker.
invoke(DefaultGrailsControllerClass.java:211)
        at org.grails.core.DefaultGrailsControllerClass.invoke(DefaultGrai
lsControllerClass.java:188)

有人可以帮我解决这个问题吗?

问候, 普拉莫德

【问题讨论】:

loginService.firstMethod() 导致问题。 loginService 初始化在哪里? 【参考方案1】:

您的服务应该在 index 操作之外声明:

package mydevpath

import grails.rest.*
import grails.converters.*

class LoginController 
static responseFormats = ['json', 'xml']

def loginService

def index() 
    def val = loginService.firstMethod()

    render 'hello World' + val


【讨论】:

以上是关于面对空指针异常:无法在空对象上调用方法 firstMethod():Grails 3.2.10的主要内容,如果未能解决你的问题,请参考以下文章

致命异常: main ,尝试在空对象引用上调用虚拟方法 [重复]

回收站视图 - 在空对象引用上

在 Activity 中调用 Fragment 方法会导致空指针异常

无法从列表视图中获取项目位置:尝试在空对象引用上调用虚拟方法...

OnGridImageSelectedListener.onGridImageSelected 上的空指针异常

原因:java.lang.NullPointerException:尝试在空对象引用上调用接口方法