gpt4 book ai didi

java - 第二次无法运行maven嵌入式tomcat

转载 作者:行者123 更新时间:2023-11-28 22:01:59 26 4
gpt4 key购买 nike

我正在尝试使用 maven tomcat 插件在同一构建中运行两组集成测试(两个不同的模块)。第一套在第一个模块上完美运行。但是tomcat无法为第二个模块部署 war 。而是给出以下异常

  com.sun.faces.config.ConfigureListener contextInitialized
SEVERE: Critical error during deployment:
com.sun.faces.config.ConfigurationException: java.util.concurrent.ExecutionException: com.sun.faces.config.ConfigurationException: Unable to parse document 'jndi:/localhost/test-module2/WEB-INF/faces-config.xml': Illegal class loader binding
at com.sun.faces.config.ConfigManager.getConfigDocuments(ConfigManager.java:760)
at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:349)
at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:214)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:5014)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5524)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1575)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1565)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.util.concurrent.ExecutionException: com.sun.faces.config.ConfigurationException: Unable to parse document 'jndi:/localhost/test-module2/WEB-INF/faces-config.xml': Illegal class loader binding
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:188)
at com.sun.faces.config.ConfigManager.getConfigDocuments(ConfigManager.java:758)
... 11 more
Caused by: com.sun.faces.config.ConfigurationException: Unable to parse document 'jndi:/localhost/test-module2/WEB-INF/faces-config.xml': Illegal class loader binding
at com.sun.faces.config.ConfigManager$ParseTask.call(ConfigManager.java:1009)
at com.sun.faces.config.ConfigManager$ParseTask.call(ConfigManager.java:953)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at com.sun.faces.config.ConfigManager.getConfigDocuments(ConfigManager.java:746)
... 11 more
Caused by: java.lang.IllegalStateException: Illegal class loader binding
at org.apache.naming.resources.DirContextURLStreamHandler.get(DirContextURLStreamHandler.java:228)
at org.apache.naming.resources.DirContextURLStreamHandler.openConnection(DirContextURLStreamHandler.java:90)
at java.net.URL.openConnection(URL.java:971)
at com.sun.faces.config.ConfigManager$ParseTask.getInputStream(ConfigManager.java:1230)
at com.sun.faces.config.ConfigManager$ParseTask.getDocument(ConfigManager.java:1030)
at com.sun.faces.config.ConfigManager$ParseTask.call(ConfigManager.java:1000)
... 14 more

两个 Maven 项目的 pom.xml 中的插件配置如下所示:

<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.3-SNAPSHOT</version>
<configuration>
<path>/test-module2</path>
<port>8081</port>
</configuration>
<executions>
<execution>
<id>start-tomcat</id>
<phase>pre-integration-test</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<fork>true</fork>
</configuration>
</execution>
<execution>
<id>stop-tomcat</id>
<phase>post-integration-test</phase>
<goals>
<goal>shutdown</goal>
</goals>
</execution>
</executions>
</plugin>

有人知道为什么会出现此错误吗?

最佳答案

在这些模块中为您的 JNDI 资源使用不同的名称。我以前也遇到过这个问题的变体。似乎有某种静态导致了这种情况。 Maven 插件执行在同一个 JVM 中——Maven 的 JVM。如果它们是在 fork 的 Java 中执行的,您很可能不会得到这个。

我不认为切换到 Jetty 会有帮助,尽管它可能确实有帮助。但是,我的印象是,这更多是 Maven 本身的问题。

我认为这可能与某处有一个静态 ServiceLocator 有关(像很多这样的例子 one 展示)。

关于java - 第二次无法运行maven嵌入式tomcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34288424/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com