java.lang.ClassNotFoundException: jakarta.faces.context.FacesContextFactory

Я сейчас пытаюсь исправить это в течение трех дней без успеха. Я работал над проектом JSF в течение нескольких недель, и у меня не было проблем, и несколько дней назад, не меняя ничего сознательно, мой кот больше не запускался. Поэтому я попытался исправить это и даже переустановил tomcat, eclipse и снова настроил проект без особого успеха. Теперь tomcat запускается снова, но он показывает мне это:

Сообщение об ошибке в браузере :

«Статус HTTP 404 — не найден
Тип:
Сообщение отчета о состоянии: Запрошенный ресурс [/Immobiliendatenbank/mainBoard.xhtml] недоступен
Описание: Исходный сервер не нашел текущее представление целевого ресурса или не желает его раскрывать. существует. Apache Tomcat/10.0.13"

Я не знаю, почему, и перепробовал так много предложений от переполнения стека и других сайтов, которые были отправлены людям с похожими проблемами, но ничего не работает.

Вот более подробная информация о проекте, которая, я думаю, может дать ключ к разгадке:

Журнал консоли:

      Critical error during deployment: 
java.lang.NoClassDefFoundError: jakarta/faces/context/FacesContextFactory
    at java.base/java.lang.ClassLoader.defineClass1(Native Method)
    at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1012)
    at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150)
    at java.base/java.net.URLClassLoader.defineClass(URLClassLoader.java:524)
    at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:427)
    at java.base/java.net.URLClassLoader$1.run(URLClassLoader.java:421)
    at java.base/java.security.AccessController.doPrivileged(AccessController.java:712)
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:420)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:587)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Class.java:467)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1428)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1252)
    at java.base/java.lang.Class.forName0(Native Method)
    at java.base/java.lang.Class.forName(Class.java:467)
    at jakarta.faces.FactoryFinderInstance.getImplGivenPreviousImpl(FactoryFinderInstance.java:410)
    at jakarta.faces.FactoryFinderInstance.getImplementationInstance(FactoryFinderInstance.java:338)
    at jakarta.faces.FactoryFinderInstance.getFactory(FactoryFinderInstance.java:183)
    at jakarta.faces.FactoryFinder.getFactory(FactoryFinder.java:264)
    at com.sun.faces.config.processor.FactoryConfigProcessor.lambda$verifyFactoriesExist$0(FactoryConfigProcessor.java:289)
    at java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:992)
    at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762)
    at com.sun.faces.config.processor.FactoryConfigProcessor.verifyFactoriesExist(FactoryConfigProcessor.java:283)
    at com.sun.faces.config.processor.FactoryConfigProcessor.process(FactoryConfigProcessor.java:198)
    at com.sun.faces.config.ConfigManager.lambda$initialize$0(ConfigManager.java:263)
    at java.base/java.util.AbstractList$RandomAccessSpliterator.forEachRemaining(AbstractList.java:720)
    at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762)
    at com.sun.faces.config.ConfigManager.initialize(ConfigManager.java:261)
    at com.sun.faces.config.ConfigureListener.contextInitialized(ConfigureListener.java:206)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4715)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5179)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1396)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1386)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:919)
    at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:886)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1396)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1386)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
    at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145)
    at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:919)
    at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:263)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.StandardService.startInternal(StandardService.java:432)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:927)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:795)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:568)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:345)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:476)
Caused by: java.lang.ClassNotFoundException: jakarta.faces.context.FacesContextFactory
    at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:445)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:587)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
    ... 60 more

Мой web.xml:

      <?xml version="1.0" encoding="UTF-8"?>
<!-- ===========================================================================
  web.xml - Last update ==> <display-name>
  Verzeichnis: {Projekt}/WebContent/WEB-INF/
  Version für TomEE 9
============================================================================ -->
<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>Immobiliendatenbak</display-name>
  <description>web xml fuer die Immobiliendatenbank 
 
  </description>
  <welcome-file-list>
    <welcome-file>mainBoard.xhtml</welcome-file>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
   
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>jakarta.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>
    <url-pattern>*.xhtml</url-pattern>
    <url-pattern>*.jsf</url-pattern>
  </servlet-mapping>
 
  <session-config>
    <session-timeout>35</session-timeout>
  </session-config>
  <mime-mapping>
    <extension>html</extension>
    <mime-type>text/html;charset=UTF-8</mime-type>
  </mime-mapping>
  <mime-mapping>
    <extension>txt</extension>
    <mime-type>text/plain;charset=UTF-8</mime-type>
  </mime-mapping>
  <mime-mapping>
    <extension>png</extension>
    <mime-type>image/png</mime-type>
  </mime-mapping>
  <mime-mapping>
    <extension>svg</extension>
    <mime-type>image/svg+xml</mime-type>
  </mime-mapping>
  <mime-mapping>
    <extension>ttf</extension>
    <mime-type>application/font-sfnt</mime-type>
  </mime-mapping>
  <mime-mapping>
    <extension>jpg</extension>
    <mime-type>image/jpeg</mime-type>
  </mime-mapping>
  <mime-mapping>
    <extension>gif</extension>
    <mime-type>image/gif</mime-type>
  </mime-mapping>
  <context-param>
    <param-name>jakarta.faces.ENABLE_CDI_RESOLVER_CHAIN</param-name>
    <param-value>true</param-value>
  </context-param>
  <context-param>
    <param-name>jakarta.faces.validator.ENABLE_VALIDATE_WHOLE_BEAN</param-name>
    <param-value>true</param-value>
  </context-param>
  <context-param>
    <param-name>jakarta.faces.FACELETS_REFRESH_PERIOD</param-name>
    <param-value>0</param-value>
  </context-param>
  <context-param>
    <description>true: Kommentare entfernen. (Ist eine Alternative zu ui:remove)
    </description>
    <param-name>jakarta.faces.FACELETS_SKIP_COMMENTS</param-name>
    <param-value>true</param-value>
  </context-param>
  <context-param>
    <param-name>jakarta.faces.FACELETS_VIEW_MAPPINGS</param-name>
    <param-value>*.jsf;*.xhtml</param-value>
  </context-param>
  <context-param>
    <description>Valid values: Development, Production, SystemTest and
                               UnitTest
    </description>
    <param-name>jakarta.faces.PROJECT_STAGE</param-name>
    <param-value>Development</param-value>
  </context-param>
  <context-param>
    <description>If true, rendered HTML code will be formatted, so that it is
     'human-readable' i.e. additional line separators and whitespace will be
      written, that do not influence the HTML code. Default is 'true'
    </description>
    <param-name>org.apache.myfaces.PRETTY_HTML</param-name>
    <param-value>true</param-value>
  </context-param>
 
</web-app>

Мои лица-config.xml:

      <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE faces-config>

<!-- ===========================================================================
  faces-config.xml - JSF 3.0 Konfigurationsdatei
  Verzeichnis: {Projekt}/WebContent/WEB-INF/
  Version: 2021-12-04
============================================================================ -->

<faces-config version="2.3" 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/web-facesconfig_2_3.xsd"> 
 
  <application>
    
    <locale-config>
      <default-locale>de</default-locale>
      <supported-locale>en</supported-locale>
    </locale-config>
     
  </application> 
  <navigation-rule>   
    <from-view-id>/insertBoard.xhtml</from-view-id>
    
    
    <navigation-case>
      <from-outcome>user</from-outcome>
      <to-view-id>/user.xhtml</to-view-id>
    </navigation-case>
    
    <navigation-case>
      <from-outcome>admin</from-outcome>
      <to-view-id>/admin.xhtml</to-view-id>
      <redirect/>
    </navigation-case>    
  </navigation-rule>

  <managed-bean>
    <managed-bean-name>mb_db</managed-bean-name>
    <managed-bean-class>net.lehre_online.bw.DatabaseConection</managed-bean-class>
    <managed-bean-scope>application</managed-bean-scope>

    <managed-property>
      <description>true: Connections werden über einen Connection pool 
                         verwaltet
      </description>
      <property-name>use_pool</property-name>
      <value>false</value>      
    </managed-property>
        
    <managed-property>
      <property-name>user</property-name>            
      <value>user</value>      
    </managed-property>
    
    <managed-property>
      <property-name>pw</property-name>      
      <value>password</value><!--  FAlls PAsswort bei der MySql Datenbank -->
    </managed-property>
    
    <managed-property>
      <property-name>constr</property-name>
      <value>jdbc:mysql://localhost:3306/db</value>
    </managed-property>
    
     <managed-property>
      <property-name>logfile</property-name>
      <value>browse.log</value>
    </managed-property>    
  </managed-bean>
  
</faces-config>

И один из сайтов xhtml, на котором я щелкаю правой кнопкой мыши в Eclipse (Запуск от имени -> Запуск на сервере):

      <?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html>

<!-- ===========================================================================
login.xhtml - Startseite für Navigationsbeispiel                  
============================================================================ -->

<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
    xmlns:f="http://xmlns.jcp.org/jsf/core"
    xmlns:p="http://primefaces.org/ui">

<h:head>

</h:head>

<h:body>
    <ui:composition template="/masterLayout.xhtml">

        <ui:define name="title">Immobiliensuche</ui:define>

        <ui:define name="content">
            <h:form>



                <h4>Bitte geben Sie alle benötiigten Daten ein die uns helfen
                    könnten Ihre Traumimobilie zu finden.</h4>


                <div class="container overflow-hidden">
                    <div class="row gy-9">

                        <!-- Dropdown auswhl möglichkeiten -->
                        <div class="input-group flex-nowrap">
                            <span class="input-group-text col-4" id="Immo-wrapping">Immobilienart:</span>
                            <p:selectOneMenu class="coll-5" id="auswahlImmobilienart"
                                value="#{MbSuchmaske.immobilienart}">
                                <f:selectItem itemLabel="Klicken zum auswählen!" itemValue="" />
                                <f:selectItem itemLabel="Eigentumswohnung"
                                    itemValue="Eigentumswohnung" />
                                <f:selectItem itemLabel="Einfamilienhaus"
                                    itemValue="Einfamilienhaus" />
                                <f:selectItem itemLabel="Mehrfamilienhaus"
                                    itemValue="Mehrfamilienhaus" />
                                <f:selectItem itemLabel="Reihenhaus" itemValue="Reihenhaus" />
                                <f:selectItem itemLabel="Grundstück" itemValue="Grundstück" />

                            </p:selectOneMenu>
                        </div>
                        <div class="input-group flex-nowrap">
                            <span class="input-group-text col-4" id="Immo-wrapping">Stadt:</span>
                            <p:selectOneMenu id="stadtAuswahl" value="#{MbSuchmaske.stadt}">
                                <f:selectItem itemLabel="Klicken zum auswählen!" itemValue="" />
                                <f:selectItem itemLabel="Berlin" itemValue="Berlin" />
                                <f:selectItem itemLabel="Hamburg" itemValue="Hamburg" />
                                <f:selectItem itemLabel="München" itemValue="München" />
                                <f:selectItem itemLabel="Köln" itemValue="Köln" />

                            </p:selectOneMenu>
                        </div>
                        <h3>Zum verfeinern der Suche:</h3>
                        <H5></H5>
                        <h4>Die Grundfläche:</h4>
                        <div class="input-group flex-nowrap">
                            <span class="input-group-text col-4" id="addon-wrapping">
                                Minimale Grundfläche</span> <label for="customRange2"
                                class="form-label"></label>
                            <h:inputHidden id="minGrundflaeche_id" min="0" max="10000"
                                value="#{MbSuchmaske.minGrundflaeche}" />
                            <p:slider for="minGrundflaeche_id"
                                display="output_minGrundflaeche" minValue="0" maxValue="10000"
                                class="form-range" displayTemplate="{value} m²" />
                            <h:outputText id="output_minGrundflaeche"
                                value="#{MbSuchmaske.minGrundflaeche}" />
                        </div>

                        <div class="input-group flex-nowrap">
                            <span class="input-group-text col-4" id="addon-wrapping">
                                Maximale Grundfläche</span> <label for="customRange2"
                                class="form-label"></label>
                            <h:inputHidden id="maxGrundflaeche_id" min="0" max="10000"
                                value="#{MbSuchmaske.maxGrundflaeche}" />
                            <p:slider for="maxGrundflaeche_id"
                                display="output_maxGrundflaeche" minValue="0" maxValue="10000"
                                class="form-range" displayTemplate="{value} m²" />
                            <h:outputText id="output_maxGrundflaeche"
                                value="#{MbSuchmaske.maxGrundflaeche}" />
                        </div>
                        <h4>Die Wohnfläche:</h4>
                        <div class="input-group flex-nowrap">
                            <span class="input-group-text col-4" id="addon-wrapping">
                                Minimale Wohnfläche</span> <label for="customRange2" class="form-label"></label>
                            <h:inputHidden id="minWohnflaeche_id" min="0" max="1000"
                                value="#{MbSuchmaske.minWohnflaeche}" />
                            <p:slider for="minWohnflaeche_id" display="output_minWohnflaeche"
                                minValue="0" maxValue="1000" class="form-range"
                                displayTemplate="{value} m²" />
                            <h:outputText id="output_minWohnflaeche"
                                value="#{MbSuchmaske.minWohnflaeche}" />
                        </div>

                        <div class="input-group flex-nowrap">
                            <span class="input-group-text col-4" id="addon-wrapping">
                                Maximale Wohnfläche</span> <label for="customRange2" class="form-label"></label>
                            <h:inputHidden id="maxWohnflaeche_id" min="0" max="1000"
                                value="#{MbSuchmaske.maxWohnflaeche}" />
                            <p:slider for="maxWohnflaeche_id" display="output_maxWohnflaeche"
                                minValue="0" maxValue="1000" class="form-range"
                                displayTemplate="{value} m²" />
                            <h:outputText id="output_maxWohnflaeche"
                                value="#{MbSuchmaske.maxWohnflaeche}" />
                        </div>

                        <h4>Preis</h4>
                        <div class="input-group flex-nowrap">
                            <span class="input-group-text col-4" id="addon-wrapping">
                                Maximaler Immobilienpreis</span> <label for="customRange2"
                                class="form-label"></label>
                            <h:inputHidden id="preis_id" min="0" max="1000000"
                                value="#{MbSuchmaske.preis}" />
                            <p:slider for="preis_id" display="output_preis" minValue="0"
                                maxValue="1000000" class="form-range"
                                displayTemplate="{value} €" />
                            <h:outputText id="output_preis" value="#{MbSuchmaske.preis}" />
                        </div>

                    </div>

                </div>




                <div class="container overflow-hidden">
                    <div class="row gy-9">

                        <h:commandButton value="Suchen!"
                            actionListener="#{MbSuchmaske.suchErgebnis}"
                            action="resultBoard.xhtml" />
                    </div>
                </div>

            </h:form>

        </ui:define>
    </ui:composition>

</h:body>
</html>

Я использую Eclipse IDE для корпоративных Java-разработчиков и веб-разработчиков с версией: 2022-03 (4.23.0)
Apache Tomcat 10.0.13.

Я надеюсь, что кто-нибудь может помочь мне с этим.

0 ответов

Другие вопросы по тегам