【问题标题】:ClassNotFoundException when I add PersistenceExceptionTranslationPostProcess in applicationContext.xml当我在 applicationContext.xml 中添加 PersistenceExceptionTranslationPostProcess 时出现 ClassNotFoundException
【发布时间】:2015-05-11 08:37:52
【问题描述】:

我想在我的应用程序中包含 PersistenceExceptionTranslationPostProcessor。

我有一个 web 项目和一个 ejb 项目

在web项目中,我在applicationContext.xml

中添加了
<bean class="org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor"/>

web.xml 我设置了

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            /WEB-INF/dispatcher-config.xml,
            /WEB-INF/applicationContext.xml
        </param-value>
    </context-param>

然后,在 ejb 项目中,我有这样的 pom.xml

    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>3.2.3.RELEASE</version>
        <scope>provided</scope>
    </dependency>

并拥有带有@repository 注释的类。因此,当我启动 Web 应用程序时,出现以下错误:

java.lang.ClassNotFoundException: org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor

如果我从 web.xml 中删除 application.xml 的加载,错误就会消失。 有谁知道这个问题的正确配置?

这是网络层的pom

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aop</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>jstl</groupId>
        <artifactId>jstl</artifactId>
        <version>1.2</version>
    </dependency>
    <dependency>
        <groupId>com.app</groupId>
        <artifactId>delegate</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.5.2</version>
    </dependency>
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.5.2</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-core</artifactId>
        <version>${spring.security.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-config</artifactId>
        <version>${spring.security.version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-web</artifactId>
        <version>${spring.security.version}</version>
    </dependency>
    <dependency>
        <groupId>cglib</groupId>
        <artifactId>cglib</artifactId>
        <version>3.1</version>
    </dependency>
</dependencies>

这是委托层的 pom

<dependency>
<groupId>com.app</groupId>
<artifactId>ejb</artifactId>
<version>0.0.1-SNAPSHOT</version>
<type>ejb</type>

这是ejb层的pom

<dependency>
   <groupId>org.jboss.spec.javax.ejb</groupId>
   <artifactId>jboss-ejb-api_3.1_spec</artifactId>
   <version>1.0.1.Final</version>
</dependency>
<dependency>
    <groupId>com.app</groupId>
    <artifactId>ejb-util</artifactId>
    <version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>4.3.8.Final</version>
</dependency>
<dependency>
    <groupId>org.jboss.spec.javax.annotation</groupId>
    <artifactId>jboss-annotations-api_1.1_spec</artifactId>
    <version>1.0.0.Final</version>
<scope>provided</scope>

最后这是 ejb-util 的 pom

<dependency>
   <groupId>org.jboss.spec.javax.ejb</groupId>
   <artifactId>jboss-ejb-api_3.1_spec</artifactId>
   <version>1.0.1.Final</version>
</dependency>
<dependency>
    <groupId>org.jboss.spec.javax.interceptor</groupId>
    <artifactId>jboss-interceptors-api_1.1_spec</artifactId>
    <version>1.0.0.Final</version>
</dependency>
<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>4.2.11.Final</version>
    <scope>provided</scope>
</dependency>
<dependency>
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>3.2.3.RELEASE</version>
    <scope>provided</scope>
</dependency>  

这是耳塞

<dependency>
    <groupId>com.app</groupId>
    <artifactId>web</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <type>war</type>
</dependency>
<dependency>
    <groupId>com.app</groupId>
    <artifactId>ejb</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <type>ejb</type>
</dependency>

【问题讨论】:

  • 我假设您缺少一个依赖项,为什么不直接添加它?
  • 我必须添加什么依赖项?使用 spring-jdbc 我以为我已经解决了 PersistenceExceptionTranslationPostProcessor 的依赖关系
  • 你能添加你的整个maven依赖吗?
  • 确保归档 org.springframework.jdbc_XX.jar 存在于您的类路径中。 XX 是版本号

标签: hibernate spring-mvc exception jpa


【解决方案1】:

如下所示,你会在 spring-tx 包中找到这个类:

https://repository.sonatype.org/index.html#nexus-search;classname~org.springframework.dao.annotation.PersistenceExceptionTranslationPostProcessor

因此,如果您将以下内容添加到您的 POM 中,它应该可以工作:

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>spring-tx</artifactId>
  <version>3.2.3.RELEASE</version>
</dependency>

【讨论】:

    猜你喜欢
    • 2013-12-24
    • 2017-10-14
    • 1970-01-01
    • 2011-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-19
    相关资源
    最近更新 更多