Maven 3升级 - maven ear plugin捆绑不同版本的libs - ClassNotFoundException weblogic

时间:2014-03-24 07:53:44

标签: maven-3 weblogic-10.x

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

例如:commons-logging-1.1.1是maven2但是maven 3它解决了commons-logging-1.0.3

真正的问题是,当我尝试将使用maven 3创建的ear部署到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文件都没有变化。

1 个答案:

答案 0 :(得分:0)

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

作为一种解决方法,添加了maven-jar-plugin来生成带有类路径条目的清单文件,并将manifestFile属性添加到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>