【问题标题】:Spring 4 Hibernate 4 integration - DispatcherServlet and different maven dependencies cause errorSpring 4 Hibernate 4 集成 - DispatcherServlet 和不同的 maven 依赖项导致错误
【发布时间】:2014-07-04 07:44:26
【问题描述】:

我正在做我的第一个将 Spring REST 与 hibernate 集成的网络应用程序。我有单独的 html+css+jquery 网站,它处理我的 RESTful WebService。我的问题是这样的:

我一步一步地做了所有事情来构建我现在的结果。最后,当我运行 Tomcat 时,它运行正常。然后我使用 IntelliJ IDEA 构建的 REST 客户端并检查最简单且唯一的一个 url:localhost:8080/room 并收到 404。 我在谷歌上找到了一些从 web.xml 中删除的建议——我做到了。现在,当我第一次运行我的 Tomcat 并测试上面的 url 时,它会提供一个堆栈跟踪:http://pastebin.com/EMPDVCBy,然后每次下一次 404:Servlet dispatcherServlet 不可用

之前我收到一个:java.lang.ClassNotFoundException:org.springframework.web.servlet.DispatcherServlet

但我什至不知道如何,它因某种原因而改变了。 我尝试解决这个问题大约 2 天,但不知道是什么问题。我已经输入了它给我的所有可能的谷歌链接。没有任何帮助。

早些时候,当只有 Spring 项目时 - 它工作正常。在添加实体、对休眠的依赖项、所需的不同侧库(对它们的依赖项)、DAO 等之后 - 它开始导致问题。

我还注意到,在开始集成 hibernate 和 spring 后,我经常收到堆栈跟踪,它经常告诉我一些 ClassNotFoundException。来自不同的地方,即使我添加了适当的依赖项。

不知道我做错了什么。解决这个问题对我来说非常重要。 感谢您帮助我。

我明白,你会需要我的代码,但它太多了,这将是很长的帖子:) 告诉我你需要什么,我会在这里发布它

编辑 我认为可能是最重要的文件:web.xml

<!DOCTYPE web-app PUBLIC
    "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app version="3.0"
     xmlns="http://java.sun.com/xml/ns/javaee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee        http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
     metadata-complete="true">
<display-name>Archetype Created Web Application</display-name>

<servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

<filter>
    <filter-name>responseFilter</filter-name>
    <filter-class>com.maciej.filters.ResponseOriginFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>responseFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

</web-app>

Filter 是我自己的过滤器,它为每个响应添加标题。我认为这没什么大不了的。当我删除这些行时,它没有帮助。

刚才我从 intellij 中删除了我的 tomcat,删除了我的工件并从头开始创建所有内容。现在在 localhost:8080/room 我收到了巨大的堆栈跟踪:http://pastebin.com/aMHqz40R

【问题讨论】:

  • 你确定你的 pom.xml 中有 spring web 吗?
  • 是的,100% 确定,我什至尝试替换不同的版本:4.0.0、4.0.3、4.0.4 等

标签: java spring hibernate integration classnotfoundexception


【解决方案1】:

我遇到了同样的问题,终于解决了。

Hibernate 4 可以在没有注解和公共注解两种依赖的情况下工作。因此,如果您的 pom 中有任何注释依赖项,请删除它并确保它们不是其中的一部分。我的工作 pom 是

<properties>
    <spring.version>4.0.5.RELEASE</spring.version>
    <junit.version>4.11</junit.version>
    <jdk.version>1.6</jdk.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-context</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>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>${spring.version}</version>
    </dependency>

    <!-- Servlet -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>3.0-alpha-1</version>
    </dependency>

    <!-- JSTL -->
    <dependency>
        <groupId>jstl</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>


    <!-- Apache Commons Upload -->
    <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>1.2.2</version>
    </dependency>

    <!-- Apache Commons Upload -->
    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>1.3.2</version>
    </dependency>

    <!-- MYSQL dependency -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.6</version>
    </dependency>

    <!-- Hibernate -->
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>4.3.5.Final</version>
    </dependency>

    <!-- If using JPA (2), add: -->


    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-api</artifactId>
        <version>1.5.6</version>
    </dependency>

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.5.6</version>
    </dependency>

    <dependency>
        <groupId>c3p0</groupId>
        <artifactId>c3p0</artifactId>
        <version>0.9.1.2</version>
    </dependency>

    <dependency>
        <groupId>org.javassist</groupId>
        <artifactId>javassist</artifactId>
        <version>3.18.1-GA</version>
    </dependency>

</dependencies>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多