Я пытаюсь использовать плагин Spring Security OpenID в Grails. Я использовал предоставленные сценарии для генерации различных классов, и у меня в Config.groovy есть следующее:
grails.plugins.springsecurity.userLookup.userDomainClassName = 'net.example.manager.User'
grails.plugins.springsecurity.userLookup.authorityJoinClassName = 'net.example.manager.UserRole'
grails.plugins.springsecurity.authority.className = 'net.example.manager.Role'
grails.plugins.springsecurity.openid.domainClass = 'net.example.manager.OpenID'
Когда я запускаю grails run-app, я получаю следующую ошибку:
[main] ERROR context.GrailsContextLoader - Error executing bootstraps: Cannot invoke method newInstance() on null object
java.lang.NullPointerException: Cannot invoke method newInstance() on null object
at SpringSecurityOpenidGrailsPlugin$_closure2.doCall(SpringSecurityOpenidGrailsPlugin.groovy:140)
at org.grails.tomcat.TomcatServer.start(TomcatServer.groovy:212)
at grails.web.container.EmbeddableServer$start.call(Unknown Source)
at _GrailsRun_groovy$_run_closure5_closure12.doCall(_GrailsRun_groovy:158)
at _GrailsRun_groovy$_run_closure5_closure12.doCall(_GrailsRun_groovy)
at _GrailsSettings_groovy$_run_closure10.doCall(_GrailsSettings_groovy:280)
at _GrailsSettings_groovy$_run_closure10.call(_GrailsSettings_groovy)
at _GrailsRun_groovy$_run_closure5.doCall(_GrailsRun_groovy:149)
at _GrailsRun_groovy$_run_closure5.call(_GrailsRun_groovy)
at _GrailsRun_groovy.runInline(_GrailsRun_groovy:116)
at _GrailsRun_groovy.this$4$runInline(_GrailsRun_groovy)
at _GrailsRun_groovy$_run_closure1.doCall(_GrailsRun_groovy:59)
at RunApp$_run_closure1.doCall(RunApp.groovy:33)
at gant.Gant$_dispatch_closure5.doCall(Gant.groovy:381)
at gant.Gant$_dispatch_closure7.doCall(Gant.groovy:415)
at gant.Gant$_dispatch_closure7.doCall(Gant.groovy)
at gant.Gant.withBuildListeners(Gant.groovy:427)
at gant.Gant.this$2$withBuildListeners(Gant.groovy)
at gant.Gant$this$2$withBuildListeners.callCurrent(Unknown Source)
at gant.Gant.dispatch(Gant.groovy:415)
at gant.Gant.this$2$dispatch(Gant.groovy)
at gant.Gant.invokeMethod(Gant.groovy)
at gant.Gant.executeTargets(Gant.groovy:590)
at gant.Gant.executeTargets(Gant.groovy:589)
Я отследил ошибку до этой области в источнике плагина OpenID (ошибка возникает в последней строке):
String userClassName = conf.userLookup.userDomainClassName
def userClass = ctx.grailsApplication.getClassForName(userClassName)
String openIdsPropertyName = conf.openid.userLookup.openIdsPropertyName
if (openIdsPropertyName && !userClass.newInstance().hasProperty(openIdsPropertyName))
Мой класс домена существует, но по какой-то причине Grails не может получить класс, и я понятия не имею, почему.