我有一个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文件都没有变化。
答案 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>