【发布时间】:2021-07-31 08:35:57
【问题描述】:
我刚开始使用 JSF 和 Wildfly,但遇到了一个奇怪的错误。根据 BalusC (https://balusc.omnifaces.org/2020/04/jsf-23-tutorial-with-eclipse-maven.html) 的优秀教程,我来到了我必须第一次在 Wildfly 上运行 JSF 项目的部分,但它失败了,错误提示 Wildfly 根本没有提供 JSF 实现。接下来是堆栈跟踪。任何帮助将不胜感激。
21:45:48,684 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-1) MSC000001: Failed to start service jboss.deployment.unit."project-jsf-ejb-0.0.1-SNAPSHOT.war".undertow-deployment.UndertowDeploymentInfoService: org.jboss.msc.service.StartException in service jboss.deployment.unit."project-jsf-ejb-0.0.1-SNAPSHOT.war".undertow-deployment.UndertowDeploymentInfoService: java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet from [Module "deployment.project-jsf-ejb-0.0.1-SNAPSHOT.war" from Service Module Loader]
at org.wildfly.extension.undertow@23.0.2.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService.createServletConfig(UndertowDeploymentInfoService.java:1075)
at org.wildfly.extension.undertow@23.0.2.Final//org.wildfly.extension.undertow.deployment.UndertowDeploymentInfoService.start(UndertowDeploymentInfoService.java:276)
at org.jboss.msc@1.4.12.Final//org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1739)
at org.jboss.msc@1.4.12.Final//org.jboss.msc.service.ServiceControllerImpl$StartTask.execute(ServiceControllerImpl.java:1701)
at org.jboss.msc@1.4.12.Final//org.jboss.msc.service.ServiceControllerImpl$ControllerTask.run(ServiceControllerImpl.java:1559)
at org.jboss.threads@2.4.0.Final//org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1990)
at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1363)
at java.base/java.lang.Thread.run(Thread.java:832)
Caused by: java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet from [Module "deployment.project-jsf-ejb-0.0.1-SNAPSHOT.war" from Service Module Loader]
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:255)
【问题讨论】:
-
WildFly 肯定会提供 JSF 实现。你是如何启动 WildFly 的?
-
是的,我知道 Wildfly 是一个 JEE 实现,这就是我迷路的原因。我的项目是一个 Maven 项目,在这里你有我在 POM 中唯一的依赖项:
我只是将 Wildfly 作为服务器添加到 Eclipse 中。所以,我只需按下绿色按钮即可启动它jakarta.platform jakarta.jakartaee-api 8.0 .0 provided -
WildFly 目前可作为“Jakarta EE Full & Web Distribution”和“WildFly Preview EE 9 Distribution”下载。本教程仅针对“Jakarta EE Full & Web Distribution”编写(其他使用
jakarta.*包名而不是javax.*)。你具体选了哪一个?到目前为止的症状表明您选择了预览版。 -
我 BalusC,非常感谢您的宝贵时间。你是完全正确的。这就是原因。如果您在教程中警告过这一点,对不起,我没有给予足够的重视。在其他情况下,最好添加警告。再次感谢您的出色教程!