首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dom4J IllegalAccessError - Seam on JBoss 7部署错误

Dom4J IllegalAccessError - Seam on JBoss 7部署错误
EN

Stack Overflow用户
提问于 2016-01-05 12:49:25
回答 1查看 178关注 0票数 2

我正在将遗留应用程序迁移到Maven (希望稍后远离Seam)。已经有很多故障和故障,AFAIK Seam对于它将使用的依赖版本确实是变化无常的。

这个最近的错误我搞不清楚。因此,我对我的(EJB) Jar、War和Seam.jar有了一个耳闻,再加上lib/文件夹。现在,我实际上将Dom4J作为scope=provided的依赖项,因为JBoss as 7.1提供了1.6.1版本。它被包含在lib/无论如何,我还没有弄清楚原因。

但是,当我从lib/中删除所有多余的jars时,也会出现同样的错误。

重申一下,当使用Ant构建文件构建时,这个应用程序以前运行过。不过,Maven生产的EAR不会部署。我听说过类似的错误(但不是完全相同的),依赖关系在类路径中加倍。我已经检查过(在从lib/中删除它之后),除了JBoss的模块之外,应该没有其他内容。

更新: POM结构:Super是所有模块的父级,具有DependencyManagement,并且还包含模块(目前而言)。模块:核心-ejb有大量的代码和大量的依赖项,大部分是在JBoss/模块中提供的。核心网产生战争,在核心EJB上有发展.Project包括Core,Project依赖于Core,并使用阴影插件将它们合并在一起(!)。核心-耳生成耳朵从阴影-项目-ejb和项目-web。(结构是疯狂的,但受遗留应用程序的支配)。

代码语言:javascript
复制
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依赖项:树输出,清除一个错误(但仍然是相同的错误):

代码语言:javascript
复制
[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

代码语言:javascript
复制
...
<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>
...
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-01-18 10:51:22

看起来它与类路径上的多个版本发生了冲突。

有一个特定于公司的模块,就是把一堆罐子卷到一个模块中。在确保只有一个jdom-*..jar在路径上之后,它就成功了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34612126

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档