2014-09-02 85 views
0

我正在用Maven和Hibernate開發基於Spring MVC的應用程序。當我嘗試在Apache服務器上運行它時,Apache服務器在第二行中給我一個錯誤,因爲「Spring Servlet不可用」。 這裏是我的POM文件:Spring servlet不可用

<?xml version="1.0" encoding="UTF-8"?> 

http://maven.apache.org/xsd/maven-4.0.0.xsd「> 4.0.0 MavenWeb MavenWeb 戰爭 0.0.1-快照 Maven的編譯器插件 3.1 1.7 1.7 java.net.m2repo java.net Maven的2倉庫 http://download.java.net/maven/2/ 默認

<properties> 
    <spring.version>4.0.1.RELEASE</spring.version> 
</properties> 
<dependencies> 
    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>3.8.1</version> 
     <scope>test</scope> 
    </dependency> 
    <!-- Spring dependencies --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-core</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-web</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-webmvc</artifactId> 
     <version>${spring.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>hibernate</groupId> 
     <artifactId>hibernate</artifactId> 
     <version>3.1rc2</version> 
    </dependency> 

    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>3.5.5-Final</version> 
    </dependency> 
    <dependency> 
     <groupId>javax.servlet</groupId> 
     <artifactId>servlet-api</artifactId> 
     <version>2.4.public_draft</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework.integration</groupId> 
     <artifactId>spring-integration-jpa</artifactId> 
     <version>4.0.3.RELEASE</version> 
    </dependency> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-tx</artifactId> 
     <version>4.0.6.RELEASE</version> 
    </dependency> 
</dependencies> 

我張貼從控制檯的錯誤,以及:

SEVERE: Error loading WebappClassLoader 
    context: /MavenWeb 
    delegate: false 
    repositories: 
    /WEB-INF/classes/ 
----------> Parent Classloader: 
[email protected] 
org.springframework.web.servlet.DispatcherServlet 
java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526) 
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1128) 
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1026) 
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4425) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4738) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057) 
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:822) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057) 
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463) 
    at org.apache.catalina.core.StandardService.start(StandardService.java:525) 
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:754) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:595) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 

Sep 02, 2014 4:38:24 PM org.apache.catalina.core.StandardContext loadOnStartup 
SEVERE: Servlet /MavenWeb threw load() exception 
java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526) 
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1128) 
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1026) 
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4425) 
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4738) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057) 
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:822) 
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057) 
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463) 
    at org.apache.catalina.core.StandardService.start(StandardService.java:525) 
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:754) 
    at org.apache.catalina.startup.Catalina.start(Catalina.java:595) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:606) 
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289) 
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414) 

Sep 02, 2014 4:38:24 PM org.apache.coyote.http11.Http11Protocol start 
INFO: Starting Coyote HTTP/1.1 on http-8080 
Sep 02, 2014 4:38:24 PM org.apache.jk.common.ChannelSocket init 
INFO: JK: ajp13 listening on /0.0.0.0:8009 
Sep 02, 2014 4:38:24 PM org.apache.jk.server.JkMain start 
INFO: Jk running ID=0 time=0/10 config=null 
Sep 02, 2014 4:38:24 PM org.apache.catalina.startup.Catalina start 
INFO: Server startup in 424 ms 
Sep 02, 2014 4:38:26 PM org.apache.catalina.core.StandardWrapperValve invoke 
INFO: Servlet spring is currently unavailable 
+0

我認爲問題是在你的pom.xml本身,只嘗試使用依賴jar,一些看起來相當新和休息看起來像很老(談論春天罐) – 2014-09-02 14:06:12

回答

0

嘗試使用此依賴關係在你的朋友:

<properties> 
     <java-version>1.6</java-version> 
     <org.springframework-version>4.0.3.RELEASE</org.springframework-version> 
     <org.aspectj-version>1.7.4</org.aspectj-version> 
     <org.slf4j-version>1.7.5</org.slf4j-version> 
     <hibernate.version>4.3.5.Final</hibernate.version> 
    </properties> 
    <dependencies> 
     <!-- Spring --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-context</artifactId> 
      <version>${org.springframework-version}</version> 
      <exclusions> 
       <!-- Exclude Commons Logging in favor of SLF4j --> 
       <exclusion> 
        <groupId>commons-logging</groupId> 
        <artifactId>commons-logging</artifactId> 
       </exclusion> 
      </exclusions> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-webmvc</artifactId> 
      <version>${org.springframework-version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-tx</artifactId> 
      <version>${org.springframework-version}</version> 
     </dependency> 

     <!-- Hibernate --> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-core</artifactId> 
      <version>${hibernate.version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
      <version>${hibernate.version}</version> 
     </dependency> 

     <!-- Apache Commons DBCP --> 
     <dependency> 
      <groupId>commons-dbcp</groupId> 
      <artifactId>commons-dbcp</artifactId> 
      <version>1.4</version> 
     </dependency> 
     <!-- Spring ORM --> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-orm</artifactId> 
      <version>${org.springframework-version}</version> 
     </dependency> 

     <!-- AspectJ --> 
     <dependency> 
      <groupId>org.aspectj</groupId> 
      <artifactId>aspectjrt</artifactId> 
      <version>${org.aspectj-version}</version> 
     </dependency> 

     <!-- Logging --> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-api</artifactId> 
      <version>${org.slf4j-version}</version> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>jcl-over-slf4j</artifactId> 
      <version>${org.slf4j-version}</version> 
      <scope>runtime</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.slf4j</groupId> 
      <artifactId>slf4j-log4j12</artifactId> 
      <version>${org.slf4j-version}</version> 
      <scope>runtime</scope> 
     </dependency> 
     <dependency> 
      <groupId>log4j</groupId> 
      <artifactId>log4j</artifactId> 
      <version>1.2.15</version> 
      <exclusions> 
       <exclusion> 
        <groupId>javax.mail</groupId> 
        <artifactId>mail</artifactId> 
       </exclusion> 
       <exclusion> 
        <groupId>javax.jms</groupId> 
        <artifactId>jms</artifactId> 
       </exclusion> 
       <exclusion> 
        <groupId>com.sun.jdmk</groupId> 
        <artifactId>jmxtools</artifactId> 
       </exclusion> 
       <exclusion> 
        <groupId>com.sun.jmx</groupId> 
        <artifactId>jmxri</artifactId> 
       </exclusion> 
      </exclusions> 
      <scope>runtime</scope> 
     </dependency> 

     <!-- @Inject --> 
     <dependency> 
      <groupId>javax.inject</groupId> 
      <artifactId>javax.inject</artifactId> 
      <version>1</version> 
     </dependency> 

     <!-- Servlet --> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>servlet-api</artifactId> 
      <version>2.5</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet.jsp</groupId> 
      <artifactId>jsp-api</artifactId> 
      <version>2.1</version> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>javax.servlet</groupId> 
      <artifactId>jstl</artifactId> 
      <version>1.2</version> 
     </dependency> 

     <!-- Test --> 
     <dependency> 
      <groupId>junit</groupId> 
      <artifactId>junit</artifactId> 
      <version>4.7</version> 
      <scope>test</scope> 
     </dependency> 

    </dependencies> 

這適用於基本的彈簧4,休眠4 MVC應用

你的PostgreSQL dependecy添加到依賴性上面的列表。

+0

我想你現在提到的依賴關係,但我仍然需要添加幾個來完成hibernate和其他依賴項。謝謝user3487063 – 2014-09-02 14:19:13

+0

見我編輯的pom – user3487063 2014-09-02 14:37:26

+0

你好,我用你的舊pom,添加了一些需要的東西,仍然是同樣的錯誤。我的問題已更改爲更新的POM文件。另外,當我直接使用您提供給我的POM文件時,我收到錯誤。你的語法是$ {org.springframework-version}。這種語法不起作用,或者你的意思是我應該手動添加它? – 2014-09-02 14:43:06

0

java.lang.ClassNotFoundException當類加載器找不到指定的類時發生。因此,它看起來像您的WAR文件(或者應用程序部署目錄,如果您未部署WAR)在WEB-INF/lib目錄中沒有合適的彈簧JAR(Web應用程序擁有其全部位置建設時會依賴Maven依賴)。

通常您會在應用程序部署目錄中找到你所部署的Web應用程序(爲WAR文件):

[TOMCAT_HOME]/webapps/[myWebApplication] 

如果通過使用Eclipse WTP部署,這個目錄可能會從您的實際Tomcat安裝不同。這將是像

[ECLIPSE_WORKSPACE]/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/[myWebApplication] 

您可以通過檢查你的Eclipse Tomcat服務器配置找到確切的目錄,它有一個名爲節「服務器的地址」(在Eclipse服務器選項卡上Tomcat v[Version] Server at localhost雙擊)。