简体   繁体   English

Spring Hibernate JSF编译出现Tomcat 404错误

[英]Tomcat 404 Error with Spring Hibernate JSF compilation

Once I finished my DAO files, ManagedBean, Services and Models files, the Tomcat shows a 404 error. 完成DAO文件,ManagedBean,Services和Models文件后,Tomcat显示404错误。 In my web.xml file I even declared a welcome-page to index.html. 在我的web.xml文件中,我甚至声明了index.html的欢迎页面。

Here is my web.xml content : 这是我的web.xml内容:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <display-name>school</display-name>
  <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>
  <!-- Add Support for Spring -->
 <listener>
   <listener-class>
           org.springframework.web.context.ContextLoaderListener
   </listener-class>
 </listener>
 <listener>
   <listener-class>
           org.springframework.web.context.request.RequestContextListener
   </listener-class>
</listener>
   <!-- welcome page -->
 <welcome-file-list>
   <welcome-file>index.xhtml</welcome-file>
 </welcome-file-list>
</web-app>

And finally the Tomcat log : 最后是Tomcat日志:

    août 21, 2015 8:56:52 AM org.apache.tomcat.util.digester.SetPropertiesRule begin
AVERTISSEMENT: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:school' did not find a matching property.
août 21, 2015 8:56:52 AM org.apache.catalina.startup.VersionLoggerListener log
INFOS: Server version:        Apache Tomcat/8.0.20
août 21, 2015 8:56:52 AM org.apache.catalina.startup.VersionLoggerListener log
INFOS: Server built:          Feb 15 2015 18:10:42 UTC
août 21, 2015 8:56:52 AM org.apache.catalina.startup.VersionLoggerListener log
INFOS: Server number:         8.0.20.0
août 21, 2015 8:56:52 AM org.apache.catalina.startup.VersionLoggerListener log
INFOS: OS Name:               Windows 10
août 21, 2015 8:56:52 AM org.apache.catalina.startup.VersionLoggerListener log
INFOS: OS Version:            10.0
août 21, 2015 8:56:52 AM org.apache.catalina.startup.VersionLoggerListener log
INFOS: Architecture:          amd64
août 21, 2015 8:56:52 AM org.apache.catalina.startup.VersionLoggerListener log
INFOS: Java Home:             C:\Program Files\Java\jdk1.8.0_60\jre
août 21, 2015 8:56:52 AM org.apache.catalina.startup.VersionLoggerListener log
INFOS: JVM Version:           1.8.0_60-b27
août 21, 2015 8:56:52 AM org.apache.catalina.startup.VersionLoggerListener log
INFOS: JVM Vendor:            Oracle Corporation
août 21, 2015 8:56:52 AM org.apache.catalina.startup.VersionLoggerListener log
INFOS: CATALINA_BASE:         C:\Users\ceo\Desktop\School WS\.metadata\.plugins\org.eclipse.wst.server.core\tmp0
août 21, 2015 8:56:52 AM org.apache.catalina.startup.VersionLoggerListener log
INFOS: CATALINA_HOME:         C:\Program Files\Apache Software Foundation\Apache Tomcat 8.0.20
août 21, 2015 8:56:52 AM org.apache.catalina.startup.VersionLoggerListener log
INFOS: Command line argument: -Dcatalina.base=C:\Users\ceo\Desktop\School WS\.metadata\.plugins\org.eclipse.wst.server.core\tmp0
août 21, 2015 8:56:52 AM org.apache.catalina.startup.VersionLoggerListener log
INFOS: Command line argument: -Dcatalina.home=C:\Program Files\Apache Software Foundation\Apache Tomcat 8.0.20
août 21, 2015 8:56:52 AM org.apache.catalina.startup.VersionLoggerListener log
INFOS: Command line argument: -Dwtp.deploy=C:\Users\ceo\Desktop\School WS\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps
août 21, 2015 8:56:52 AM org.apache.catalina.startup.VersionLoggerListener log
INFOS: Command line argument: -Djava.endorsed.dirs=C:\Program Files\Apache Software Foundation\Apache Tomcat 8.0.20\endorsed
août 21, 2015 8:56:52 AM org.apache.catalina.startup.VersionLoggerListener log
INFOS: Command line argument: -Dfile.encoding=Cp1252
août 21, 2015 8:56:52 AM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFOS: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jdk1.8.0_60\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jre1.8.0_60/bin/server;C:/Program Files/Java/jre1.8.0_60/bin;C:/Program Files/Java/jre1.8.0_60/lib/amd64;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files\Microsoft SQL Server\120\DTS\Binn\;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\110\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn\;C:\Program Files\Microsoft SQL Server\120\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\120\Tools\Binn\ManagementStudio\;C:\Program Files (x86)\Microsoft SQL Server\120\DTS\Binn\;C:\Program Files (x86)\Common Files\Acronis\SnapAPI\;%JAVA_HOME%\bin;%M2_HOME%\bin;C:\eclipse;;.
août 21, 2015 8:56:55 AM org.apache.coyote.AbstractProtocol init
INFOS: Initializing ProtocolHandler ["http-nio-8080"]
août 21, 2015 8:56:55 AM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
INFOS: Using a shared selector for servlet write/read
août 21, 2015 8:56:55 AM org.apache.coyote.AbstractProtocol init
INFOS: Initializing ProtocolHandler ["ajp-nio-8009"]
août 21, 2015 8:56:55 AM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
INFOS: Using a shared selector for servlet write/read
août 21, 2015 8:56:55 AM org.apache.catalina.startup.Catalina load
INFOS: Initialization processed in 5931 ms
août 21, 2015 8:56:55 AM org.apache.catalina.core.StandardService startInternal
INFOS: Démarrage du service Catalina
août 21, 2015 8:56:55 AM org.apache.catalina.core.StandardEngine startInternal
INFOS: Starting Servlet Engine: Apache Tomcat/8.0.20
août 21, 2015 8:56:58 AM org.apache.catalina.util.SessionIdGeneratorBase createSecureRandom
INFOS: Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [406] milliseconds.
août 21, 2015 8:57:29 AM org.apache.catalina.core.ApplicationContext log
INFOS: No Spring WebApplicationInitializer types detected on classpath
août 21, 2015 8:57:30 AM org.apache.catalina.core.StandardContext listenerStart
GRAVE: Exception lors de l'envoi de l'évènement contexte initialisé (context initialized) à l'instance de classe d'écoute (listener) org.springframework.web.context.ContextLoaderListener
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
    at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:304)
    at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:107)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4728)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5162)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1399)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1305)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1157)
    ... 11 more

août 21, 2015 8:57:31 AM com.sun.faces.config.ConfigureListener contextInitialized
INFOS: Initialisation de Mojarra 2.1.13 ( 20120907-1514) pour le contexte «/school»
août 21, 2015 8:57:40 AM com.sun.faces.spi.InjectionProviderFactory createInstance
INFOS: JSF1048 : Présence d’annotations PostConstruct/PreDestroy  Les méthodes de beans gérés marquées avec ces annotations auront des annotations dites traitées.
août 21, 2015 8:57:46 AM org.primefaces.webapp.PostConstructApplicationEventListener processEvent
INFOS: Running on PrimeFaces 5.2
août 21, 2015 8:57:46 AM org.apache.catalina.core.StandardContext startInternal
GRAVE: Error listenerStart
août 21, 2015 8:57:46 AM org.apache.catalina.core.StandardContext startInternal
GRAVE: Erreur de démarrage du contexte [/school] suite aux erreurs précédentes
août 21, 2015 8:57:46 AM org.apache.catalina.core.ApplicationContext log
INFOS: Closing Spring root WebApplicationContext
août 21, 2015 8:57:46 AM org.apache.catalina.core.StandardContext listenerStop
GRAVE: Exception lors de l'envoi de l'évènement contexte détruit (context destroyed) à l'instance de classe d'écoute org.springframework.web.context.ContextLoaderListener
java.lang.NoClassDefFoundError: org/apache/commons/logging/LogFactory
    at org.springframework.web.context.ContextCleanupListener.<clinit>(ContextCleanupListener.java:43)
    at org.springframework.web.context.ContextLoaderListener.contextDestroyed(ContextLoaderListener.java:117)
    at org.apache.catalina.core.StandardContext.listenerStop(StandardContext.java:4775)
    at org.apache.catalina.core.StandardContext.stopInternal(StandardContext.java:5385)
    at org.apache.catalina.util.LifecycleBase.stop(LifecycleBase.java:232)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:160)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409)
    at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1399)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1305)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1157)
    ... 12 more

août 21, 2015 8:57:46 AM org.apache.coyote.AbstractProtocol start
INFOS: Starting ProtocolHandler ["http-nio-8080"]
août 21, 2015 8:57:46 AM org.apache.coyote.AbstractProtocol start
INFOS: Starting ProtocolHandler ["ajp-nio-8009"]
août 21, 2015 8:57:47 AM org.apache.catalina.startup.Catalina start
INFOS: Server startup in 51370 ms

POM POM

    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.bluepenlabs</groupId>
  <artifactId>school</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>School 2.0 Pro</name>
  <url>http://school.bluepenlabs.com</url>

  <repositories>
  <repository>
<id>prime-repo</id>
<name>PrimeFaces Maven Repository</name>
<url>http://repository.primefaces.org</url>
<layout>default</layout>
</repository>
  </repositories>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.6</version>
</dependency>
<dependency>
    <groupId>commons-dbcp</groupId>
    <artifactId>commons-dbcp</artifactId>
    <version>1.4</version>
</dependency>
<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-core</artifactId>
    <version>4.0.2.RELEASE</version>
</dependency>


<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>4.3.11.Final</version>
</dependency>


    <!-- Spring Framework-->
<!-- Support for JSF -->
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-web</artifactId>
    <version>4.2.0.RELEASE</version>
</dependency>

<!-- Support for PM -->
    <dependency>
    <groupId>org.primefaces</groupId>
    <artifactId>primefaces</artifactId>
    <version>5.2</version>
    </dependency>
    <dependency>
        <groupId>org.glassfish</groupId>
        <artifactId>javax.faces</artifactId>
        <version>2.1.13</version>
 </dependency>
 <dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.2</version>
</dependency>
 <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>4.2.0.RELEASE</version>
</dependency>
  </dependencies>
  <build>
    <finalName>school</finalName>

    <plugins>
        <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
        </configuration>
    </plugin>
    </plugins>
</build>
</project>

This is the exception you should be focused on 这是您应该关注的例外

Caused by: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory

That means you are probably missing commons-logging . 这意味着您可能缺少commons-logging

Download them as jar and put them into your lib folder or if you are using maven add them as dependency 将它们下载为jar并将其放入您的lib文件夹中;如果使用的是maven,请将其添加为依赖项

<dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.2</version>
</dependency>

The solution is to remove 解决的办法是删除

 <listener>
   <listener-class>
           org.springframework.web.context.request.RequestContextListener
   </listener-class>
</listener>

As it is included on the Spring 4 Context settings while it is not in spring 3. 由于它不在Spring 3中,因此包含在Spring 4 Context设置中。

I searched all over the net, the solution was in the Spring 4 ChangeLog. 我在网上搜索,解决方案是在Spring 4 ChangeLog中。 https://spring.io/blog/2014/01/30/migrating-from-spring-framework-3-2-to-4-0-1 https://spring.io/blog/2014/01/30/migrating-from-spring-framework-3-2-to-4-0-1

Hope this helps as a million question is about this all over the net without any clear reply. 希望这会有所帮助,因为有100万个问题在网上没有得到明确答复。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM