【问题标题】:Wildfly not providing JSF implementation?Wildfly 不提供 JSF 实现?
【发布时间】: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 中唯一的依赖项:jakarta.platformjakarta.jakartaee-api8.0 .0provided我只是将 Wildfly 作为服务器添加到 Eclipse 中。所以,我只需按下绿色按钮即可启动它
  • WildFly 目前可作为“Jakarta EE Full & Web Distribution”和“WildFly Preview EE 9 Distribution”下载。本教程仅针对“Jakarta EE Full & Web Distribution”编写(其他使用jakarta.* 包名而不是javax.*)。你具体选了哪一个?到目前为止的症状表明您选择了预览版。
  • 我 BalusC,非常感谢您的宝贵时间。你是完全正确的。这就是原因。如果您在教程中警告过这一点,对不起,我没有给予足够的重视。在其他情况下,最好添加警告。再次感谢您的出色教程!

标签: jsf wildfly


【解决方案1】:

WildFly 目前可作为“Jakarta EE Full & Web Distribution”和“WildFly Preview EE 9 Distribution”下载。本教程仅针对“Jakarta EE Full & Web Distribution”编写。 “WildFly Preview EE 9 Distribution”使用jakarta.* 包名而不是javax.* 包。

Installing WildFly”部分已更新。之前说的

WildFly 是 Red Hat 的开源 Jakarta EE 应用服务器。您可以从 wildfly.org 下载它。确保选择“Java EE Full & Web Distribution”下载,而不是例如“Servlet-Only Distribution”。

现已更新为

WildFly 是 Red Hat 的开源 Jakarta EE 应用服务器。您可以从 wildfly.org 下载它。确保选择“Jakarta EE Full & Web Distribution”下载,而不是“WildFly Preview EE 9 Distribution”或“Servlet-Only Distribution”等。

应该注意的是,“WildFly Preview EE 9 Distribution”可以安全地使用,只要您牢记在教程中的所有位置手动将javax.* 替换为jakarta.*

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-03-01
    • 1970-01-01
    • 2016-02-24
    • 2017-03-11
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    相关资源
    最近更新 更多