尝试用CDI2.0设置一个maven web项目,这个项目应该在Tomcat8.5上运行。所以我得安装jboss焊接3。
Weld、CDI和Java版本之间有什么关系?
带着POM声明离开这里(只有“焊缝-servlet-核心”).
焊接- POM声明(docs.jboss.org)
我在web.xml中声明的“web.xml”中出现了一个错误:
<!-- This listener should always be the last registered listener -->
<listener>
<listener-class>org.jboss.weld.servlet.WeldTerminalListener</listener-class>
</listener>错误: java.lang.ClassNotFoundException: org.jboss.weld.servlet.WeldTerminalListener
如果我使用以下POM声明,它可以正常工作:
<dependency>
<groupId>org.jboss.weld.servlet</groupId>
<artifactId>weld-servlet</artifactId>
<version>2.3.5.Final</version>
</dependency>焊缝-servlet(没有"-core") 3只能作为alpha提供。版本2是无法实现CDI2.0的。
那么,我需要POM中的哪个依赖项来运行它呢?
发布于 2018-04-06 06:31:03
焊接3改变了一些工件的名称。改变的是shaded工件,请参阅这部分文件。
也就是说,在焊接2中,weld-servlet是这个JAR的阴影版本,所以在Weld 3中等效的是weld-servlet-shaded。
在您的情况下,您可以使用此阴影版本(org.jboss.weld.servlet:weld-servlet-shaded)或核心版本(org.jboss.weld.servlet:weld-servlet-core)。
至于侦听器的类,您可以检查你自己的生长激素,但故事是它也被修改了(向JDK 9+中的包冲突问好)。现在是:
<listener>
<listener-class>org.jboss.weld.module.web.servlet.WeldTerminalListener</listener-class>
</listener>焊接文档(3.0.3,for)在这方面有错误信息。我将确保它在下一个版本中得到了修正(谢谢你指出这一点)。
发布于 2018-04-05 14:14:09
关于weld-servlet-core库的3.x版本,类的实际位置似乎不同。在研究了库jar文件之后,我发现该类的全名如下所示:
<listener>
<listener-class>org.jboss.weld.module.web.servlet.WeldTerminalListener</listener-class>
</listener>https://stackoverflow.com/questions/49672950
复制相似问题