我正在使用maven创建一个spring mvc应用程序。它使用WebApplicationInitializer进行初始化。现在我试图添加hibernate依赖。当我添加它时,WebApplicationInitializer的onStartup不会被调用。我正在使用tomcat 7.即使我删除了hibernate依赖项并更新项目,问题仍然存在。可能是什么问题?
的pom.xml
<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.pdma</groupId>
<artifactId>dmapp</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>dmapp Maven Webapp</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<spring.framework.version>4.3.1.RELEASE</spring.framework.version>
<jackson-version>2.7.5</jackson-version>
<javax-servlet-api-version>3.1.0</javax-servlet-api-version>
<javax-servlet-jstl-version>1.2</javax-servlet-jstl-version>
<maven-compiler-plugin-version>3.2</maven-compiler-plugin-version>
<maven-war-plugin-version>2.4</maven-war-plugin-version>
<source-jdk>1.7</source-jdk>
<target-jdk>1.7</target-jdk>
<war-source-directory>src/main/webapp</war-source-directory>
<war-name>dmapp</war-name>
<final-name>dmapp</final-name>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.framework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${spring.framework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.framework.version}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.3.6.Final</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson-version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${javax-servlet-api-version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>${javax-servlet-jstl-version}</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven-compiler-plugin-version}</version>
<configuration>
<source>${source-jdk}</source>
<target>${target-jdk}</target>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>${maven-war-plugin-version}</version>
<configuration>
<warSourceDirectory>${war-source-directory}</warSourceDirectory>
<warName>${war-name}</warName>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
<finalName>${final-name}</finalName>
</build>
</project>
AppConfig.java
package com.pdma.dmapp.configuration;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = "com.pdma.dmapp")
public class AppConfig extends WebMvcConfigurerAdapter{
@Override
public void configureViewResolvers(ViewResolverRegistry registry){
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setViewClass(JstlView.class);
viewResolver.setPrefix("/WEB-INF/views/");
viewResolver.setSuffix(".jsp");
registry.viewResolver(viewResolver);
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry){
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
registry.addResourceHandler("/angularApps/**").addResourceLocations("/angularApps/");
}
}
AppInitializer.java
package com.pdma.dmapp.configuration;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration;
import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;
public class AppInitializer implements WebApplicationInitializer{
public void onStartup(ServletContext container) throws ServletException {
AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
ctx.register(AppConfig.class);
ctx.setServletContext(container);
ServletRegistration.Dynamic servlet = container.addServlet("dispatcher", new DispatcherServlet(ctx));
servlet.setLoadOnStartup(1);
servlet.addMapping("*.html");
servlet.addMapping("*.htm");
servlet.addMapping("*.ajax");
}
}
WebApplication未初始化时的控制台
Nov 15, 2016 7:57:47 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.j2ee.server:dmapp' did not find a matching property.
Nov 15, 2016 7:57:47 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server version: Apache Tomcat/8.0.28
Nov 15, 2016 7:57:47 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server built: Oct 7 2015 18:25:21 UTC
Nov 15, 2016 7:57:47 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server number: 8.0.28.0
Nov 15, 2016 7:57:47 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Name: Windows 10
Nov 15, 2016 7:57:47 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Version: 10.0
Nov 15, 2016 7:57:47 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Architecture: amd64
Nov 15, 2016 7:57:47 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Java Home: C:\Program Files\Java\jre1.8.0_101
Nov 15, 2016 7:57:47 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Version: 1.8.0_101-b13
Nov 15, 2016 7:57:47 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Vendor: Oracle Corporation
Nov 15, 2016 7:57:47 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_BASE: E:\PDMA\dev\workingCopy\.metadata\.plugins\org.eclipse.wst.server.core\tmp0
Nov 15, 2016 7:57:47 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_HOME: E:\Resources\tomcat\apache-tomcat-8.0.28
Nov 15, 2016 7:57:47 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.base=E:\PDMA\dev\workingCopy\.metadata\.plugins\org.eclipse.wst.server.core\tmp0
Nov 15, 2016 7:57:47 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.home=E:\Resources\tomcat\apache-tomcat-8.0.28
Nov 15, 2016 7:57:47 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dwtp.deploy=E:\PDMA\dev\workingCopy\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps
Nov 15, 2016 7:57:47 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.endorsed.dirs=E:\Resources\tomcat\apache-tomcat-8.0.28\endorsed
Nov 15, 2016 7:57:47 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dfile.encoding=Cp1252
Nov 15, 2016 7:57:47 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: 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\jre1.8.0_101\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:/Program Files/Java/jre1.8.0_101/bin/server;C:/Program Files/Java/jre1.8.0_101/bin;C:/Program Files/Java/jre1.8.0_101/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)\AMD\ATI.ACE\Core-Static;C:\Program Files (x86)\Skype\Phone\;C:\Program Files\Git\cmd;C:\Program Files\Git\mingw64\bin;C:\Program Files\Git\usr\bin;C:\Program Files (x86)\MySQL\MySQL Fabric 1.5 & MySQL Utilities 1.5\;C:\Program Files (x86)\MySQL\MySQL Fabric 1.5 & MySQL Utilities 1.5\Doctrine extensions for PHP\;C:\Users\user\AppData\Local\Microsoft\WindowsApps;;C:\eclipse;;.
Nov 15, 2016 7:57:47 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-nio-8080"]
Nov 15, 2016 7:57:47 PM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
INFO: Using a shared selector for servlet write/read
Nov 15, 2016 7:57:47 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-nio-8009"]
Nov 15, 2016 7:57:47 PM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
INFO: Using a shared selector for servlet write/read
Nov 15, 2016 7:57:47 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 793 ms
Nov 15, 2016 7:57:47 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Nov 15, 2016 7:57:47 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/8.0.28
Nov 15, 2016 7:57:48 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-nio-8080"]
Nov 15, 2016 7:57:48 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-nio-8009"]
Nov 15, 2016 7:57:48 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 380 ms
WebApplicationInitializer启动时控制台
Nov 15, 2016 7:48:35 PM org.apache.tomcat.util.digester.SetPropertiesRule begin
WARNING: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.j2ee.server:dmapp' did not find a matching property.
Nov 15, 2016 7:48:35 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server version: Apache Tomcat/8.0.28
Nov 15, 2016 7:48:35 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server built: Oct 7 2015 18:25:21 UTC
Nov 15, 2016 7:48:35 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Server number: 8.0.28.0
Nov 15, 2016 7:48:35 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Name: Windows 10
Nov 15, 2016 7:48:35 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: OS Version: 10.0
Nov 15, 2016 7:48:35 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Architecture: amd64
Nov 15, 2016 7:48:35 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Java Home: C:\Program Files\Java\jre1.8.0_101
Nov 15, 2016 7:48:35 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Version: 1.8.0_101-b13
Nov 15, 2016 7:48:35 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: JVM Vendor: Oracle Corporation
Nov 15, 2016 7:48:35 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_BASE: E:\PDMA\dev\workingCopy\.metadata\.plugins\org.eclipse.wst.server.core\tmp0
Nov 15, 2016 7:48:35 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: CATALINA_HOME: E:\Resources\tomcat\apache-tomcat-8.0.28
Nov 15, 2016 7:48:35 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.base=E:\PDMA\dev\workingCopy\.metadata\.plugins\org.eclipse.wst.server.core\tmp0
Nov 15, 2016 7:48:35 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dcatalina.home=E:\Resources\tomcat\apache-tomcat-8.0.28
Nov 15, 2016 7:48:35 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dwtp.deploy=E:\PDMA\dev\workingCopy\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps
Nov 15, 2016 7:48:35 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Djava.endorsed.dirs=E:\Resources\tomcat\apache-tomcat-8.0.28\endorsed
Nov 15, 2016 7:48:35 PM org.apache.catalina.startup.VersionLoggerListener log
INFO: Command line argument: -Dfile.encoding=Cp1252
Nov 15, 2016 7:48:35 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: 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\jre1.8.0_101\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:/Program Files/Java/jre1.8.0_101/bin/server;C:/Program Files/Java/jre1.8.0_101/bin;C:/Program Files/Java/jre1.8.0_101/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)\AMD\ATI.ACE\Core-Static;C:\Program Files (x86)\Skype\Phone\;C:\Program Files\Git\cmd;C:\Program Files\Git\mingw64\bin;C:\Program Files\Git\usr\bin;C:\Program Files (x86)\MySQL\MySQL Fabric 1.5 & MySQL Utilities 1.5\;C:\Program Files (x86)\MySQL\MySQL Fabric 1.5 & MySQL Utilities 1.5\Doctrine extensions for PHP\;C:\Users\user\AppData\Local\Microsoft\WindowsApps;;C:\eclipse;;.
Nov 15, 2016 7:48:35 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["http-nio-8080"]
Nov 15, 2016 7:48:35 PM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
INFO: Using a shared selector for servlet write/read
Nov 15, 2016 7:48:35 PM org.apache.coyote.AbstractProtocol init
INFO: Initializing ProtocolHandler ["ajp-nio-8009"]
Nov 15, 2016 7:48:35 PM org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
INFO: Using a shared selector for servlet write/read
Nov 15, 2016 7:48:35 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1005 ms
Nov 15, 2016 7:48:35 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Nov 15, 2016 7:48:35 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/8.0.28
Nov 15, 2016 7:48:36 PM org.apache.jasper.servlet.TldScanner scanJars
INFO: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
Nov 15, 2016 7:48:37 PM org.apache.catalina.core.ApplicationContext log
INFO: 1 Spring WebApplicationInitializers detected on classpath
Nov 15, 2016 7:48:37 PM org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring FrameworkServlet 'dispatcher'
Nov 15, 2016 7:48:37 PM org.springframework.web.servlet.DispatcherServlet initServletBean
INFO: FrameworkServlet 'dispatcher': initialization started
Nov 15, 2016 7:48:37 PM org.springframework.web.context.support.AnnotationConfigWebApplicationContext prepareRefresh
INFO: Refreshing WebApplicationContext for namespace 'dispatcher-servlet': startup date [Tue Nov 15 19:48:37 PKT 2016]; root of context hierarchy
Nov 15, 2016 7:48:37 PM org.springframework.web.context.support.AnnotationConfigWebApplicationContext loadBeanDefinitions
INFO: Registering annotated classes: [class com.pdma.dmapp.configuration.AppConfig]
Nov 15, 2016 7:48:38 PM org.springframework.web.servlet.handler.SimpleUrlHandlerMapping registerHandler
INFO: Mapped URL path [/resources/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
Nov 15, 2016 7:48:38 PM org.springframework.web.servlet.handler.SimpleUrlHandlerMapping registerHandler
INFO: Mapped URL path [/angularApps/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
Nov 15, 2016 7:48:38 PM org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping register
INFO: Mapped "{[/surveys/uploadSurvey],methods=[GET]}" onto public java.lang.String com.pdma.dmapp.module.surveys.controller.SurveysController.getSurveyExcel(org.springframework.ui.ModelMap)
Nov 15, 2016 7:48:38 PM org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter initControllerAdviceCache
INFO: Looking for @ControllerAdvice: WebApplicationContext for namespace 'dispatcher-servlet': startup date [Tue Nov 15 19:48:37 PKT 2016]; root of context hierarchy
Nov 15, 2016 7:48:38 PM org.springframework.web.servlet.DispatcherServlet initServletBean
INFO: FrameworkServlet 'dispatcher': initialization completed in 1761 ms
Nov 15, 2016 7:48:39 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["http-nio-8080"]
Nov 15, 2016 7:48:39 PM org.apache.coyote.AbstractProtocol start
INFO: Starting ProtocolHandler ["ajp-nio-8009"]
Nov 15, 2016 7:48:39 PM org.apache.catalina.startup.Catalina start
INFO: Server startup in 3486 ms
Nov 15, 2016 7:48:39 PM org.springframework.web.servlet.PageNotFound noHandlerFound
WARNING: No mapping found for HTTP request with URI [/dmapp/] in DispatcherServlet with name 'dispatcher'
答案 0 :(得分:2)
我按照以下链接创建了tomcat服务器,现在运行正常。
http://websystique.com/misc/how-to-setup-tomcat-with-eclipse/
如果有人能解释这与仅仅创建一个tomcat服务器并运行它而不修改Location等有什么不同。?
更新
事实证明,在更新pom.xml并更新maven项目之后,eclipse会从类路径中删除maven依赖项...再次添加它们是正确的解决方案。
答案 1 :(得分:0)
对我来说,解决该问题的方法是删除项目的.classpath
文件,然后将项目重新导入Eclipse。
答案 2 :(得分:0)
在Intellij
中遇到了同样的问题。 IDE不会自动将jar文件复制到/WEB-INF/lib
。需要在"File-->Project Structure --> Artifacts
处做些事情。