2011-10-23 16 views
1

私はgrailsアプリケーションを持っており、run-appを実行しています - すべてOK!しかし後:grails run-war、私はエラーに追いつく:grails run-warのエラー

 
Exception sending context initialized event to listener instance of class org.codehaus.groovy.grails.web.context.GrailsContextLoaderListener 

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'd1LdapServer': Invocation of init method failed; nested exception is groovy.lang.GroovyRuntimeException: Ambiguous method overloading for method java.io.File#. 

Cannot resolve which method to invoke for [null, class java.lang.String] due to overlapping prototypes between: 

    [class java.io.File, class java.lang.String] 

    [class java.lang.String, class java.lang.String] 

    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 

    at java.util.concurrent.FutureTask.run(FutureTask.java:138) 

    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 

    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 

    at java.lang.Thread.run(Thread.java:662) 

Caused by: groovy.lang.GroovyRuntimeException: Ambiguous method overloading for method java.io.File#. 

Cannot resolve which method to invoke for [null, class java.lang.String] due to overlapping prototypes between: 

    [class java.io.File, class java.lang.String] 

    [class java.lang.String, class java.lang.String] 

    at grails.ldap.server.TransientGrailsLdapServer.getWorkDir(TransientGrailsLdapServer.groovy:265) 

    at grails.ldap.server.TransientGrailsLdapServer.startDirectoryService(TransientGrailsLdapServer.groovy:208) 

    at grails.ldap.server.TransientGrailsLdapServer.start(TransientGrailsLdapServer.groovy:79) 

    at grails.ldap.server.TransientGrailsLdapServer.afterPropertiesSet(TransientGrailsLdapServer.groovy:67) 

私は助けていただきありがとうございます。ありがとう! grails.ldap.server.TransientGrailsLdapServer.getWorkDirで

答えて

0

問題はライン

新しいファイル(ベース、 "LDAP-サーバ/ $のbeanName")にヌルされ、ベース引数によって引き起こされる

( )

これは設定上の問題を指摘していますが、基本引数がnullになる環境によっては多少の違いがありますか?

1

「ldap-server」プラグインでTomcatにデプロイするときに同じ問題が発生しました。

ServletContextHolder.servletContext 

使用:TransientGrailsLdapServer.getWorkDirため

ApplicationHolder.application.parentContext.servletContext 

完全なソース():

import org.codehaus.groovy.grails.commons.ApplicationHolder 

private getWorkDir() {  
    def base = ApplicationHolder.application.parentContext.servletContext ? WebUtils.getTempDir(ApplicationHolder.application.parentContext.servletContext) : new File(BuildSettingsHolder.settings?.projectWorkDir, beanName) 
    new File(base, "ldap-servers/$beanName") 
} 
私にとって は修正が

代わりApplicationHolder経由のServletContextを提供することでした

関連する問題