java.lang.AbstractMethodError: org.apache.xerces.jaxp.DocumentBuilderFactoryImpl does not inherit of abstract javax.xml.parsers.DocumentBuilderFactory [repicate] 。

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

一般性。

OmniFaces Xercex Naming-Conflict while Migration of JSF-Web-Projekt (Java and Tomcat)

介紹 在过去的几年里,我们开始构建企业级JSF应用(Eclipse, Maven, CDI (Open-Web-Beans), Omni-Faces, PrimeFaces, ...),现在我们想从java 1.8和Tomcat 7迁移到新的版本。现在我们想从java 1.8和tomcat 7迁移到新的版本。遇到的问题 我们尝试在Tomcat 9和openjdk 14上运行我们的应用程序,但没有成功,所以我们尝试将所有的依赖关系升级到兼容版本。现在我们在启动Tomcat时卡住了(在eclipse 2020-03中),出现了以下异常--不知道该从哪里继续。添加的文件 我添加了我们的pom-file,在异常后加上了我们的依赖关系和版本。如果你还需要其他的东西或更多的细节,请随时询问。我正在寻找任何一个人可以给我指出正确的方向,我们使用的哪个版本是错误的。

异常。

INFO: OpenSSL successfully initialized [OpenSSL 1.1.1g  21 Apr 2020]
Juni 09, 2020 4:12:29 PM org.apache.coyote.AbstractProtocol init
INFO: Initialisiere ProtocolHandler["http-nio-8080"]
Juni 09, 2020 4:12:30 PM org.apache.catalina.startup.Catalina load
INFO: Server initialization in [1.952] milliseconds
Juni 09, 2020 4:12:30 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service [Catalina]
Juni 09, 2020 4:12:30 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet engine: [Apache Tomcat/9.0.36]
Juni 09, 2020 4:12:53 PM org.apache.jasper.servlet.TldScanner scanJars
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
Juni 09, 2020 4:12:53 PM org.omnifaces.ApplicationInitializer logOmniFacesVersion
INFO: Using OmniFaces version 3.6
Juni 09, 2020 4:12:53 PM org.apache.catalina.core.ContainerBase startInternal
SEVERE: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/application]]
    at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
    at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:916)
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:841)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909)
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:421)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:930)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:633)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:564)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:343)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:474)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/application]]
    at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:440)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1384)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1374)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:140)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909)
    ... 21 more
Caused by: java.lang.IllegalStateException: OmniFaces failed to initialize! Report an issue to OmniFaces.
    at org.omnifaces.ApplicationInitializer.onStartup(ApplicationInitializer.java:57)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5128)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    ... 27 more
Caused by: java.lang.AbstractMethodError: Receiver class org.apache.xerces.jaxp.DocumentBuilderFactoryImpl does not define or inherit an implementation of the resolved method 'abstract void setFeature(java.lang.String, boolean)' of abstract class javax.xml.parsers.DocumentBuilderFactory.
    at org.omnifaces.util.Xml.createDocumentBuilder(Xml.java:88)
    at org.omnifaces.util.Xml.createDocument(Xml.java:69)
    at org.omnifaces.util.Xml.getNodeTextContents(Xml.java:172)
    at org.omnifaces.facesviews.FacesViews.scanAndStoreWelcomeFiles(FacesViews.java:413)
    at org.omnifaces.facesviews.FacesViews.registerForwardingFilter(FacesViews.java:266)
    at org.omnifaces.ApplicationInitializer.onStartup(ApplicationInitializer.java:54)
    ... 29 more

异常又重复了两次,然后用..:

Juni 09, 2020 4:12:53 PM org.apache.coyote.AbstractProtocol pause
INFO: Pausing ProtocolHandler ["http-nio-8080"]
Juni 09, 2020 4:12:53 PM org.apache.catalina.core.StandardService stopInternal
INFO: Stopping service [Catalina]
Juni 09, 2020 4:12:53 PM org.apache.coyote.AbstractProtocol destroy
INFO: Destroying ProtocolHandler ["http-nio-8080"]
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.apache.catalina.loader.WebappClassLoaderBase (file:/N:/Entwicklung_Projekte/Projekt_Framework_41/JSF-Client/Forschung/Tomcat/apache-tomcat-9.0.36/lib/catalina.jar) to field java.io.ObjectStreamClass$Caches.localDescs
WARNING: Please consider reporting this to the maintainers of org.apache.catalina.loader.WebappClassLoaderBase
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release

pom -file:

(只有依赖关系)

    <!-- framework.jar -->
    <dependency>
        <groupId>com.qsc.portalclient.framework</groupId>
        <artifactId>framework</artifactId>
        <version>0.0.1</version>
    </dependency>

    <!-- PrimeFaces -->
    <dependency>
        <groupId>org.primefaces</groupId>
        <artifactId>primefaces</artifactId>
        <version>8.0</version>
    </dependency>
    <dependency>
        <groupId>org.primefaces.extensions</groupId>
        <artifactId>primefaces-extensions</artifactId>
        <version>8.0.2</version>
    </dependency>

    <dependency>
        <groupId>org.primefaces.extensions</groupId>
        <artifactId>resources-ckeditor</artifactId>
        <version>8.0.2</version>
        <scope>runtime</scope>
    </dependency>

    <!-- JSF - Mojarra - API & IMPL -->
    <dependency>
        <groupId>org.apache.myfaces.core</groupId>
        <artifactId>myfaces-api</artifactId>
        <version>2.3.6</version>
    </dependency>
    <dependency>
        <groupId>org.apache.myfaces.core</groupId>
        <artifactId>myfaces-impl</artifactId>
        <version>2.3.6</version>
    </dependency>


    <!-- CDI OpenWebBeans -->
    <dependency>
        <groupId>javax.enterprise</groupId>
        <artifactId>cdi-api</artifactId>
        <version>2.0.SP1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.openwebbeans</groupId>
        <artifactId>openwebbeans-impl</artifactId>
        <version>2.0.16</version>
    </dependency>
    <dependency>
        <groupId>org.apache.openwebbeans</groupId>
        <artifactId>openwebbeans-spi</artifactId>
        <version>2.0.16</version>
    </dependency>
    <dependency>
        <groupId>org.apache.openwebbeans</groupId>
        <artifactId>openwebbeans-web</artifactId>
        <version>2.0.16</version>
    </dependency>
    <dependency>
        <groupId>org.apache.openwebbeans</groupId>
        <artifactId>openwebbeans-jsf</artifactId>
        <version>2.0.16</version>
    </dependency>
    <dependency>
        <groupId>org.apache.openwebbeans</groupId>
        <artifactId>openwebbeans-el22</artifactId>
        <version>2.0.16</version>
    </dependency>
    <dependency>
        <groupId>javax.validation</groupId>
        <artifactId>validation-api</artifactId>
        <version>2.0.1.Final</version>
    </dependency>
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
        <version>3.10</version>
    </dependency>

    <!-- JSP Library -->
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>javax.servlet.jsp-api</artifactId>
        <version>2.3.3</version>
    </dependency>
    <!-- JSTL Library -->
    <dependency>
        <groupId>javax.servlet.jsp.jstl</groupId>
        <artifactId>jstl-api</artifactId>
        <version>1.2</version>
    </dependency>

    <!-- OmniFaces -->
    <dependency>
        <groupId>org.omnifaces</groupId>
        <artifactId>omnifaces</artifactId>
        <version>3.6</version>
    </dependency>
java tomcat jsf migration omnifaces
1个回答
1
投票

我终于能够找到一个答案。

我发现下面的问题,这已经被回答了。java.lang.AbstractMethodError: org.apache.xerces.dom.ElementImpl.getTextContent()LjavalangString()

在这里,解决方案是要么升级Xercex,要么完全从\lib中删除它。

我们使用的是内部的Jar文件,它本身就包含了旧版本的2.4.0的xercex。这就是导致问题的原因。

在内部jar-depency之后加入以下版本的xercexes就解决了这个问题。

<!-- https://mvnrepository.com/artifact/xerces/xercesImpl -->
<dependency>
    <groupId>xerces</groupId>
    <artifactId>xercesImpl</artifactId>
    <version>2.12.0</version>
</dependency>
© www.soinside.com 2019 - 2024. All rights reserved.