尝试使用CDI 2.0设置maven web项目,该项目应该在Tomcat 8.5上运行。所以我必须安装jboss WELD 3.
What is the relation between Weld, CDI and Java EE versions?
POM声明离开这里(只有“weld-servlet-core”)......
WELD - POM declaration (docs.jboss.org)
我在web.xml中声明的“WeldTerminalListener”出现错误:
<!-- 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>
weld-servlet(不带“-core”)3仅作为alpha使用。版本2不支持CDI 2.0。
为了让它运行,我需要在POM中使用哪种依赖?
答案 0 :(得分:0)
关于 weld-servlet-core 库的3.x版本,似乎该类的实际位置不同。在浏览了库 jar 文件之后,我发现该类的全名如下:
<listener>
<listener-class>org.jboss.weld.module.web.servlet.WeldTerminalListener</listener-class>
</listener>
答案 1 :(得分:0)
Weld 3更改了一些工件名称。这是已更改的library(tcltk2)
mydata <- data.frame()
string_val <- "Hello World"
fupdate <- function(){
rbind(mydata , string_val)
}
tclTaskSchedule(5000, fupdate(), id = "fupdate", redo = TRUE)
工件,请参阅this part of documentation。
即,在Weld 2中shaded
是此JAR的着色版本,因此Weld 3中的等效项为weld-servlet-shaded
。
在您的情况下,您可以使用此着色版本(weld-servlet
)或核心版本(org.jboss.weld.servlet:weld-servlet-shaded
)。
至于监听器的类,你可以check yourself on GH,但故事也被改变了(在JDK 9+中打包冲突问好)。 现在是:
org.jboss.weld.servlet:weld-servlet-core
焊接文档(适用于3.0.3.Final)有关于此的错误信息。 我会确保它已经针对下一个版本进行了更正(感谢您指出这一点)。