我将遗留应用程序迁移到Maven(希望以后远离Seam)。已经有很多故障和故障,AFAIK Seam在它可以使用的依赖版本上真的很变幻无常。
这个最新的错误我无法弄清楚。所以我有一个EAR与我的(EJB)Jar,一个War和Seam.jar,以及lib /文件夹。现在我实际上将Dom4J作为scope = provided的依赖项,因为JBoss AS 7.1提供了1.6.1版本。它被包含在lib /无论如何,我还没弄清楚为什么。
但是当从lib /.
中删除所有多余的罐子时,我得到了同样的错误重申一下,当使用Ant构建文件构建时,此应用程序之前正在运行。 Maven生产的EAR虽然不会部署。我听说过类似的错误(但不完全相同),类路径中的依赖项加倍。我已经检查过(从lib /中删除后),除了JBoss中的那个之外应该没有。模块。
更新: POM结构: Super-POM是所有模块的父级,具有DependencyManagement并且还包含模块(现在)。 模块:Core-ejb具有代码和大量的依赖关系,主要是因为它们在JBoss /模块中提供。 Core-web生成WAR,对Core-EJB有dep。 Project-Web包括Core-Web,Project-EJB依赖于Core-EJB并使用shade-plugin将它们合并在一起(!)。 Core-EAR从shaded-project-ejb和project-web生成ear。 (结构很疯狂,但由传统应用决定)。
12:42:37,694 INFO [javax.servlet.ServletContextListener] (MSC service thread 1-6) Welcome to Seam 2.3.1.Final
12:42:38,745 INFO [org.jboss.seam.init.Initialization] (MSC service thread 1-6) reading /WEB-INF/components.xml
12:42:38,749 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/]] (MSC service thread 1-6) Exception sending context initialized event to listener instance of class org.jboss.seam.servlet.SeamListener: java.lang.IllegalAccessError: tried to access class org.dom4j.io.SAXHelper from class org.dom4j.io.SAXReader
at org.dom4j.io.SAXReader.createXMLReader(SAXReader.java:894) [dom4j-1.6.1.jar:1.6.1]
at org.dom4j.io.SAXReader.getXMLReader(SAXReader.java:715) [dom4j-1.6.1.jar:1.6.1]
at org.dom4j.io.SAXReader.read(SAXReader.java:435) [dom4j-1.6.1.jar:1.6.1]
at org.dom4j.io.SAXReader.read(SAXReader.java:343) [dom4j-1.6.1.jar:1.6.1]
at org.jboss.seam.util.XML.getRootElement(XML.java:24) [jboss-seam-2.3.1.Final.jar:2.3.1.Final]
at org.jboss.seam.init.Initialization.initComponentsFromXmlDocument(Initialization.java:227) [jboss-seam-2.3.1.Final.jar:2.3.1.Final]
at org.jboss.seam.init.Initialization.create(Initialization.java:133) [jboss-seam-2.3.1.Final.jar:2.3.1.Final]
at org.jboss.seam.servlet.SeamListener.contextInitialized(SeamListener.java:36) [jboss-seam-2.3.1.Final.jar:2.3.1.Final]
at org.apache.catalina.core.StandardContext.contextListenerStart(StandardContext.java:3392) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.StandardContext.start(StandardContext.java:3850) [jbossweb-7.0.13.Final.jar:]
at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:90) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_80]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_80]
at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_80]
mvn依赖:树输出,清理了一个错误(但仍然是同样的错误):
[INFO] ------------------------------------------------------------------------
[INFO] Building Core Framework 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ Core ---
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Core EJB module 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ Core-ejb ---
[INFO] com.mycomp:Core-ejb:ejb:1.0-SNAPSHOT
[INFO] +- org.hibernate:hibernate-core:jar:4.2.0.Final:provided
[INFO] | \- (dom4j:dom4j:jar:1.6.1:provided - omitted for duplicate)
[INFO] +- dom4j:dom4j:jar:1.6.1:provided
[INFO] \- org.jdom:jdom:jar:1.1.2:provided
[INFO] \- jaxen:jaxen:jar:1.1.3:provided
[INFO] \- (dom4j:dom4j:jar:1.6.1:provided - omitted for duplicate)
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Core Web module 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ Core-web ---
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Project EJB module 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ project-ejb ---
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Project Web module 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ project-web ---
[INFO]
[INFO] ------------------------------------------------------------------------
[INFO] Building Core EAR module 1.0-SNAPSHOT
[INFO] ------------------------------------------------------------------------
[INFO]
[INFO] --- maven-dependency-plugin:2.10:tree (default-cli) @ Core-ear ---
[WARNING] Using Maven 2 dependency tree to get verbose output, which may be inconsistent with actual Maven 3 resolution
核心耳朵POM :
...
<dependencies>
<!-- project specific dependencies -->
<dependency>
<groupId>com.mycomp</groupId>
<artifactId>project-web</artifactId>
<version>${logis.artifact.version}</version>
<type>war</type>
</dependency>
<dependency>
<groupId>com.mycomp</groupId>
<artifactId>project-ejb</artifactId>
<version>${logis.artifact.version}</version>
<type>ejb</type>
</dependency>
<!-- Seam dependency -->
<dependency>
<groupId>org.jboss.seam</groupId>
<artifactId>jboss-seam</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>2.6</version>
<configuration>
<!-- Tell Maven we are using Java EE 6 -->
<version>6</version>
<!-- Use Java EE ear libraries as needed. Java EE ear libraries are
in easy way to package any libraries needed in the ear, and automatically
have any modules (EJB-JARs and WARs) use them -->
<defaultLibBundleDir>lib</defaultLibBundleDir>
<!-- See maven docs; Necessary because we CAN'T have 2 jboss-seam.jars
in the same EAR -->
<skinnyWars>true</skinnyWars>
<initializeInOrder>true</initializeInOrder>
<modules>
<!-- Explicitly excluding core framework artifacts, as they get merged
(shaded) into the project artifacts -->
<ejbModule>
<groupId>com.mycomp</groupId>
<artifactId>core-ejb</artifactId>
<excluded>true</excluded>
</ejbModule>
<!-- <webModule>
<groupId>com.mycomp</groupId>
<artifactId>core-web</artifactId>
<excluded>true</excluded>
</webModule> -->
<!-- Project specific part -->
<ejbModule>
<groupId>com.mycomp</groupId>
<artifactId>project-ejb</artifactId>
<!-- Manually set jar name, because many JndiNames in logis hard-code
that name -->
<bundleFileName>core.jar</bundleFileName>
</ejbModule>
<webModule>
<groupId>com.mycomp</groupId>
<artifactId>project-web</artifactId>
<contextRoot>/</contextRoot>
</webModule>
<!-- Need to include Seam as a module so it will be "executed" and
can initialize itself -->
<jarModule>
<groupId>org.jboss.seam</groupId>
<artifactId>jboss-seam</artifactId>
<includeInApplicationXml>true</includeInApplicationXml>
<bundleDir>/</bundleDir>
</jarModule>
</modules>
</configuration>
</plugin>
...
答案 0 :(得分:0)
看起来它与类路径上的多个版本存在冲突。
有一个公司特定的模块,只是将一堆罐子集成到一个模块中。确定之后,只有一个jdom - * .jar在路上,它起作用了。