【问题标题】:Errors with grails run-wargrails run-war 的错误
【发布时间】:2011-10-23 12:45:10
【问题描述】:

我有 grails 应用程序,并且在执行 run-app 时 - 一切正常!但之后:grails run-war,我得到以下错误:

向 org.codehaus.groovy.grails.web.context.GrailsContextLoaderListener 类的监听器实例发送上下文初始化事件的异常 org.springframework.beans.factory.BeanCreationException:创建名为“d1LdapServer”的bean时出错:调用init方法失败;嵌套异常是 groovy.lang.GroovyRuntimeException: 方法 java.io.File# 的不明确方法重载。 由于以下之间的原型重叠,无法解析为 [null, class java.lang.String] 调用哪个方法: [类 java.io.File,类 java.lang.String] [类java.lang.String,类java.lang.String] 在 java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) 在 java.util.concurrent.FutureTask.run(FutureTask.java:138) 在 java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) 在 java.lang.Thread.run(Thread.java:662) 引起:groovy.lang.GroovyRuntimeException:方法 java.io.File# 的方法重载不明确。 由于以下之间的原型重叠,无法解析为 [null, class java.lang.String] 调用哪个方法: [类 java.io.File,类 java.lang.String] [类java.lang.String,类java.lang.String] 在 grails.ldap.server.TransientGrailsLdapServer.getWorkDir(TransientGrailsLdapServer.groovy:265) 在 grails.ldap.server.TransientGrailsLdapServer.startDirectoryService(TransientGrailsLdapServer.groovy:208) 在 grails.ldap.server.TransientGrailsLdapServer.start(TransientGrailsLdapServer.groovy:79) 在 grails.ldap.server.TransientGrailsLdapServer.afterPropertiesSet(TransientGrailsLdapServer.groovy:67)

感谢任何帮助。谢谢!

【问题讨论】:

    标签: tomcat grails


    【解决方案1】:

    在 tomcat 上部署时,“ldap-server”插件也有同样的问题。 对我来说,解决方法是通过 ApplicationHolder 提供 servletContext

    改为:

    ServletContextHolder.servletContext
    

    使用:

    ApplicationHolder.application.parentContext.servletContext
    

    TransientGrailsLdapServer.getWorkDir() 的完整源代码:

    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")
    }
    

    【讨论】:

      【解决方案2】:

      问题是由于该行中的基本参数为空

      新文件(基础,“ldap-servers/$beanName”)

      在 grails.ldap.server.TransientGrailsLdapServer.getWorkDir() 中

      这指向一个配置问题,也许您的环境之间存在一些差异导致基本参数为空?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-08
        • 1970-01-01
        • 2015-01-13
        • 2011-10-10
        相关资源
        最近更新 更多