Jsf Wildfly从错误开始。javax.faces.FacesException:找不到CDI BeanManager

Jsf Wildfly从错误开始。javax.faces.FacesException:找不到CDI BeanManager,jsf,jboss,wildfly,Jsf,Jboss,Wildfly,我已经用WildFly 18,jdk-13.0.1在eclipse中编写了我的第一个JSF hello world程序,视窗10 Wildfly home和管理控制台正在工作,但在从url执行程序时查找http://localhost:8080/jsf1/faces/WEB-INF/helloworld.xhtml它给出了404-未找到错误。我在urlhttp://localhost:8080/jsf1 这是web.xml文件 <?xml version="1.0" encoding="U

我已经用WildFly 18,jdk-13.0.1在eclipse中编写了我的第一个JSF hello world程序,视窗10

Wildfly home和管理控制台正在工作,但在从url执行程序时查找
http://localhost:8080/jsf1/faces/WEB-INF/helloworld.xhtml
它给出了
404-未找到
错误。我在url
http://localhost:8080/jsf1

这是web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
  <display-name>jsf1</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>/faces/*</url-pattern>
  </servlet-mapping>
</web-app>
文件夹树:

我通过创建一个新项目并将“动态Web模块版本更改为3.1”和“Java Server Faces版本更改为2.2”修复了错误。以前,它们分别被设置为版本4和2.3


我通过创建一个新项目并将“动态Web模块版本更改为3.1”和“Java Server Faces版本更改为2.2”修复了错误。以前,它们分别被设置为版本4和2.3


我在
WEB-INF
目录中添加了
beans.xml
文件,其中包含以下内容,错误消失了。最后,我能够在“DynamicWebModuleVersion4.0”和“JavaServerFacesVersion2.3”中运行HelloWorld程序

beans.xml内容

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_2_0.xsd"
       version="2.0" bean-discovery-mode="annotated">

</beans>

我在
WEB-INF
目录中添加了
beans.xml
文件,其中包含以下内容,错误消失了。最后,我能够在“DynamicWebModuleVersion4.0”和“JavaServerFacesVersion2.3”中运行HelloWorld程序

beans.xml内容

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_2_0.xsd"
       version="2.0" bean-discovery-mode="annotated">

</beans>


您的pom.xml和文件/文件夹树是什么样子的<代码>/jsf1/faces/WEB-INF/helloworld.xhtml是一个奇怪的请求路径。是的,两个404都可以解释,与启动prtoblem没有任何关系,除非完全部署失败,这在您的情况下是非常正常的。你有没有在你的war中加入jsf(这是Selaron最想从pom.xml中推断出来的)好的,你有没有试着在搜索引擎中发布“javax.faces.FacesException:找不到CDI BeanManager”?你的
xhtml
文件应该在你的WebContent目录中,而不是
WEB-INF
WEB-INF
不作为WEB目录公开,绝对不应该公开。如果这是公开的,那么您的所有配置文件也将公开。您能检查一下您的项目中是否有“旧的”
@ManagedBean
注释吗?我已经很长时间没有使用它们了,但在调查时,我意外地遇到了同样的错误,并且认为注释与此相关。当我不使用
@ManagedBean
而是使用
@Named
(我已经做了很多年了)时,在使用servlet 4.0和jsf 2.3规范时,我没有遇到这个错误。您的pom.xml和文件/文件夹树是什么样子的<代码>/jsf1/faces/WEB-INF/helloworld.xhtml是一个奇怪的请求路径。是的,两个404都可以解释,与启动prtoblem没有任何关系,除非完全部署失败,这在您的情况下是非常正常的。你有没有在你的war中加入jsf(这是Selaron最想从pom.xml中推断出来的)好的,你有没有试着在搜索引擎中发布“javax.faces.FacesException:找不到CDI BeanManager”?你的
xhtml
文件应该在你的WebContent目录中,而不是
WEB-INF
WEB-INF
不作为WEB目录公开,绝对不应该公开。如果这是公开的,那么您的所有配置文件也将公开。您能检查一下您的项目中是否有“旧的”
@ManagedBean
注释吗?我已经很长时间没有使用它们了,但在调查时,我意外地遇到了同样的错误,并且认为注释与此相关。当我不使用
@ManagedBean
而是使用
@Named
(我已经做了很多年了)时,在使用servlet 4.0和jsf 2.3规范时,我没有遇到这个错误。对于我来说,这仍然是一个解决方法。你可以通过搜索你在这个解决方案中遇到的错误来找到一个Q/A,但我觉得奇怪的是你不能真正激活2.3。。。我来看看能否在下一周进行调查。你能检查一下你的项目中是否有“旧的”
@ManagedBean
注释吗?我已经很长时间没有使用它们了,但在调查时,我意外地遇到了同样的错误,并且认为注释与此相关。当我不使用
@ManagedBean
而是使用
@Named
(我已经做了很多年了)时,在使用servlet 4.0和jsf 2.3时,我没有遇到这个错误specs@Kukeltje我没有使用托管bean,它只包含两个.xhtml文件,没有其他内容。我完全按照本教程编写了这个JSF hello world示例。唯一的区别是我选择了JSF 2.3和Dynamic Web Module版本4。它不起作用,所以我将它们的版本设置为2.2和3.1。让我明天用请求参数试试。您是否可以同时尝试使用jsf管理的bean,并将其更改为cdi管理的bean,以查看它是否有所不同(使用4和2.3作为版本)检查良好的2.3教程。youtube网站往往不是最好的。对于JSF2.3,您应该使用cdi管理的bean而不是jsf bean。现在你也明白了为什么对我来说这仍然是一个解决办法。你可以通过搜索你在这个解决方案中遇到的错误来找到一个Q/A,但我觉得奇怪的是你不能真正激活2.3。。。我来看看能否在下一周进行调查。你能检查一下你的项目中是否有“旧的”
@ManagedBean
注释吗?我已经很长时间没有使用它们了,但在调查时,我意外地遇到了同样的错误,并且认为注释与此相关。当我不使用
@ManagedBean
而是使用
@Named
(我已经做了很多年了)时,在使用servlet 4.0和jsf 2.3时,我没有遇到这个错误specs@Kukeltje我没有使用托管bea
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_2_0.xsd"
       version="2.0" bean-discovery-mode="annotated">

</beans>