【问题标题】:Exception while deploying to JBoss 7.1.1, caused by: org.springframework:main is not found in local module部署到 JBoss 7.1.1 时出现异常,原因是:org.springframework:main is not found in local module
【发布时间】:2017-06-14 13:46:35
【问题描述】:

我正在尝试为使用 Spring Security 的 grails 应用程序实现模块。由于 Spring Security 和 Grails 有大量的依赖关系,war 大小变得超过 80MB。为了避免这种情况,我试图从模块中访问这些依赖项。

但是,尝试在 jboss 7.1.1.Final 中部署 grails WAR 时出现以下错误。

ERROR [org.jboss.msc.service.fail] (MSC service thread 1-4) MSC00001: Failed to start service jboss.module.service."deployment.IFP.war".main: org.jboss.msc.service.StartException in service jboss.module.service."deployment.IFP.war".main: Failed to load module: deployment.IFP.war:main
    at org.jboss.as.server.moduleservice.ModuleLoadService.start(ModuleLoadService.java:91) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) [rt.jar:1.7.0]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) [rt.jar:1.7.0]
    at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0]
Caused by: org.jboss.modules.ModuleNotFoundException: Module org.springframework:main is not found in local module loader @1f88953 (roots: C:\Jboss\jboss-as-7.1.1.Final\modules)
    at org.jboss.modules.LocalModuleLoader.findModule(LocalModuleLoader.java:126)
    at org.jboss.modules.ModuleLoader.loadModuleLocal(ModuleLoader.java:275)
    at org.jboss.modules.ModuleLoader.preloadModule(ModuleLoader.java:222)
    at org.jboss.modules.LocalModuleLoader.preloadModule(LocalModuleLoader.java:94)
    at org.jboss.modules.Module.addPaths(Module.java:841)
    at org.jboss.modules.Module.link(Module.java:1181)
    at org.jboss.modules.Module.relinkIfNecessary(Module.java:1207)
    at org.jboss.modules.ModuleLoader.loadModule(ModuleLoader.java:208)
    at org.jboss.as.server.moduleservice.ModuleLoadService.start(ModuleLoadService.java:70) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]

jboss-deployment-structure.xml

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">
    <deployment>
        <dependencies>      
            <module name="com.sits.grails">
                <imports>
                    <include path="META-INF**"/>
                    <include path="org**"/>
                </imports>
            </module>
        </dependencies>
    </deployment>
</jboss-deployment-structure>

模块.xml

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="com.sits.grails">
    <properties>
        <property name="jboss.api" value="private"/>
    </properties>

    <resources>
        <resource-root path="activation-1.1.jar"/>
        <resource-root path="antlr-2.7.7.jar"/>
        .........
        .........
        <resource-root path="jboss-logging-3.1.0.GA.jar"/>
        <resource-root path="jboss-logging-annotations-1.2.0.Beta1.jar"/>
        <resource-root path="jboss-transaction-api_1.2_spec-1.0.0.Final.jar"/>
        <resource-root path="jcl-over-slf4j-1.7.5.jar"/>
        <resource-root path="jsr166y-1.7.0.jar"/>
        <resource-root path="jul-to-slf4j-1.7.5.jar"/>
        <resource-root path="liquibase-core-2.0.5.jar"/>
        <resource-root path="log4j-1.2.17.jar"/>
        <resource-root path="mysql-connector-java-5.1.13.jar"/>
        <resource-root path="netty-all-4.0.15.Final.jar"/>
        <resource-root path="rhino-1.7R4.jar"/>
        <resource-root path="serializer-2.7.1.jar"/>
        <resource-root path="sitemesh-2.4.jar"/>
        <resource-root path="slf4j-api-1.7.5.jar"/>
        <resource-root path="spring-aop-4.0.7.RELEASE.jar"/>
        <resource-root path="spring-aspects-4.0.7.RELEASE.jar"/>
        <resource-root path="spring-beans-4.0.7.RELEASE.jar"/>
        <resource-root path="spring-context-4.0.7.RELEASE.jar"/>
        <resource-root path="spring-context-support-4.0.7.RELEASE.jar"/>
        <resource-root path="spring-core-4.0.7.RELEASE.jar"/>
        <resource-root path="spring-expression-4.0.7.RELEASE.jar"/>
        <resource-root path="spring-jdbc-4.0.7.RELEASE.jar"/>
        <resource-root path="spring-orm-4.0.7.RELEASE.jar"/>
        <resource-root path="spring-security-core-3.2.7.RELEASE.jar"/>
        <resource-root path="spring-security-web-3.2.7.RELEASE.jar"/>
        <resource-root path="spring-tx-4.0.7.RELEASE.jar"/>
        <resource-root path="spring-web-4.0.7.RELEASE.jar"/>
        <resource-root path="spring-webmvc-4.0.7.RELEASE.jar"/>
        <resource-root path="tomcat-embed-logging-log4j-7.0.50.jar"/>
        <resource-root path="tomcat-jdbc-7.0.50.jar"/>
        <resource-root path="tomcat-juli-7.0.50.jar"/>
        <resource-root path="validation-api-1.1.0.Final.jar"/>        
    </resources>

    <dependencies>
       <module name="javax.api"/>
       <module name="sun.jdk"/>
       <module name="org.javassist" optional="true"/>
       <module name="javax.servlet.api"/>
       <module name="org.apache.commons.logging"/>     
    </dependencies>
</module>

在我的 MANIFEST.MF 文件中声明了依赖项

Dependencies: org.apache.log4j,com.sits.grails,org.springframework

我不明白是什么导致了这个问题。如果有人可以帮助我识别将是一个很大的帮助。谢谢。

ApplicationContext.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="grailsApplication" class="org.codehaus.groovy.grails.commons.GrailsApplicationFactoryBean">
        <description>Grails application factory bean</description>
        <property name="grailsDescriptor" value="/WEB-INF/grails.xml" />
    </bean>

    <bean id="pluginManager" class="org.codehaus.groovy.grails.plugins.GrailsPluginManagerFactoryBean">
        <description>A bean that manages Grails plugins</description>
        <property name="grailsDescriptor" value="/WEB-INF/grails.xml" />
        <property name="application" ref="grailsApplication" />
    </bean>

    <bean id="grailsConfigurator" class="org.codehaus.groovy.grails.commons.spring.GrailsRuntimeConfigurator">
        <constructor-arg>
            <ref bean="grailsApplication" />
        </constructor-arg>
        <property name="pluginManager" ref="pluginManager" />
    </bean>

    <bean id="characterEncodingFilter" class="org.springframework.web.filter.CharacterEncodingFilter">
        <property name="encoding">
            <value>utf-8</value>
        </property>
    </bean>

    <bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean" />
</beans>

【问题讨论】:

    标签: spring jboss7.x grails-2.0


    【解决方案1】:

    在 MANIFEST.MF 中指定的模块名称不是包名称,而是在 JBoss 的 module.xml 中定义的模块名称

    包含 spring jar 的 module.xml 被命名为 com.sits.grails。因此,您的 MANIFEST.MF 不应包含 org.springframework,因为它没有定义为单独的模块。

    【讨论】:

    • 我从 MANIFEST.MF 中删除了 org.springframework。现在我收到以下错误。“错误 [org.springframework.web.context.ContextLoader](MSC 服务线程 1-2)上下文初始化失败:org.springframework.beans.factory.BeanCreationException:创建名称为 bean 时出错” ServletContext 资源 [/WEB-INF/applicationContext.xml] 中定义的 pluginManager':调用 init 方法失败;嵌套异常是 java.lang.ExceptionInInitializerError'
    • 现在可以使用弹簧罐了。异常可能是由于您的配置。您可以使用 pluginManager bean 显示配置
    • 您是指ApplicationContext.xml 文件还是Config.groovy 文件中的配置。
    • 我已经用 ApplicationContext.xml 文件更新了我的帖子。请参考。
    猜你喜欢
    • 1970-01-01
    • 2022-09-27
    • 2019-07-03
    • 1970-01-01
    • 2017-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多