Maven 3升级-Maven Ear插件捆绑了不同版本的库-ClassNotFoundException Weblogic

问题描述 投票:0回答:1

我有一个Maven多模块项目。其中很少有Web项目和ejb项目。整个项目的源代码没有变化。我只是升级到Maven 3并构建了我的项目。生成的耳文件具有与使用maven 2构建的耳文件不同的库。某些特定库的旧版本和某些特定库的新版本。

例如:commons-logging-1.1.1与maven2一起使用,但通过maven 3,它解析为commons-logging-1.0.3

真正的问题是,当我尝试将用maven 3创建的耳朵部署到weblogic服务器时,我得到了Spring类的ClassNotFoundException。但是,春季课程在耳挂中。我仔细检查了一下。使用maven 2构建的相同源代码的ear文件已成功部署。

<Mar 24, 2014 11:42:17 AM IST> <Error> <HTTP> <BEA-101371> <There was a failure when processing annotations for application C:\weblogic\appsrv\domains\mydomain\servers\admin\tmp\_WL_user\myApp-ear\1697udy\app-control.war. Please make sure that the annotations are valid. The error is org.springframework.web.context.support.HttpRequestHandlerServlet>
<Mar 24, 2014 11:42:17 AM IST> <Error> <Deployer> <BEA-149205> <Failed to initialize the application 'mayApp-ear' due to error weblogic.application.ModuleException: Failed to load webapp: '/app-control-war'.
weblogic.application.ModuleException: Failed to load webapp: '/app-control-war'
        at weblogic.servlet.internal.WebAppModule.prepare(WebAppModule.java:387)
        at weblogic.application.internal.flow.ScopedModuleDriver.prepare(ScopedModuleDriver.java:180)
        at weblogic.application.internal.flow.ModuleListenerInvoker.prepare(ModuleListenerInvoker.java:93)
        at weblogic.application.internal.flow.DeploymentCallbackFlow$1.next(DeploymentCallbackFlow.java:388)
        at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:37)
        Truncated. see log file for complete stacktrace
java.lang.ClassNotFoundException: org.springframework.web.context.support.HttpRequestHandlerServlet
        at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:283)
        at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:256)
        at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:54)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
        Truncated. see log file for complete stacktrace

如果我升级了Maven,是否需要告诉应用程序服务器?

更新:我看到我的ejb模块的清单文件之一中没有类路径条目。这可能是问题的原因。但是,当使用maven2构建一切正常时,为什么会丢失它呢?任何pom文件都没有任何更改。

maven-3 weblogic-10.x
1个回答
0
投票

原来是Maven 3.0.3的错误https://jira.codehaus.org/i#browse/MEJB-53

作为一种解决方法,添加了maven-jar-plugin以生成具有类路径条目的清单文件,并将manifestFileFile属性添加至maven-ejb-plugin

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-jar-plugin</artifactId>
    <configuration>
        <archive>
            <manifest>
                <addClasspath>true</addClasspath>
            </manifest>
        </archive>
    </configuration>
</plugin>
<plugin>
   <groupId>org.apache.maven.plugins</groupId>
   <artifactId>maven-ejb-plugin</artifactId>
   <configuration>
       <ejbVersion>3.0</ejbVersion>
       <archive>
        <manifestFile>target/generated-resources/META-INF/MANIFEST.MF</manifestFile>
       </archive>
  </configuration>

© www.soinside.com 2019 - 2024. All rights reserved.