1

我正在开发一个 spring mvc maven 项目,在初始阶段我可以解决这个错误。在我的 servlet-context.xml 中,我试图生成“HibernateTransactionManager”bean,它会抛出这个错误:

error: "Build path is incomplete. Cannot find class file for org/hibernate/HibernateException"

由于这是一个 Maven 项目,我在 pom.xml 中添加了以下依赖项

<!--  Dependency added for spring -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-web</artifactId>
        <version>${org.springframework-version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${org.springframework-version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-core</artifactId>
        <version>${org.springframework-version}</version>
    </dependency>               


    <!-- Dependency added for Spring Security -->
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-core</artifactId>
        <version>3.0.5.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-config</artifactId>
        <version>3.0.5.RELEASE</version>
    </dependency>
    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-web</artifactId>
        <version>3.0.5.RELEASE</version>
    </dependency>

    <!-- Dependency added for AOP -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aop</artifactId>
        <version>${org.springframework-version}</version>
    </dependency>
    <dependency>
        <groupId>cglib</groupId>
        <artifactId>cglib</artifactId>
        <version>2.2</version>
    </dependency>

    <!-- Dependency for Hibernate -->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-orm</artifactId>
        <version>${org.springframework-version}</version>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-jdbc</artifactId>
        <version>${org.springframework-version}</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-core</artifactId>
        <version>${org.hibernate-version}</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>4.2.0.Final</version>
    </dependency>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${com.mysql-version}</version>
    </dependency>
    <dependency>
        <groupId>commons-dbcp</groupId>
        <artifactId>commons-dbcp</artifactId>
        <version>20030825.184428</version>
    </dependency>
    <dependency>
        <groupId>commons-pool</groupId>
        <artifactId>commons-pool</artifactId>
        <version>20030825.183949</version>
    </dependency>
    <dependency>
        <groupId>javassist</groupId>
        <artifactId>javassist</artifactId>
        <version>3.12.1.GA</version>
    </dependency>

    <!-- Dependency for Http Client -->
    <dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.1.1</version>
    </dependency>
    <dependency>
        <groupId>jdom</groupId>
        <artifactId>jdom</artifactId>
        <version>1.0</version>
    </dependency>
    <dependency>
    <groupId>rome</groupId>
    <artifactId>rome</artifactId>
    <version>0.5</version>
    </dependency>

我什至可以在我的 Maven 依赖树中找到我所有的类。

我还尝试在外部为 spring-orm 添加一个新的 .jar,但这也不起作用。我曾多次尝试清理构建并重新编译,但没有成功。

我非常感谢您的任何意见。

4

2 回答 2

1

这是我的第一个 SO 答案,所以请多多包涵。生成的错误是“找不到 org/hibernate/HibernateException 的类文件”。您提供的 POM 列出了您的项目的所有依赖项,并包括对 hibernate-validator jar 的引用。

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.2.0.Final</version>
</dependency>

如果您提取此 jar 文件并搜索其内容,则找不到名为 HibernateException 的类文件。这是错误的根本原因,您是一个包含 HibernateException 类文件的存储库。

当您使用 maven 时,您可以在此处查看与 Hibernate 相关的所有存储库 http://mvnrepository.com/artifact/org.hibernate

我选择了 hibernate-core-4.2.0.Final 作为核心,这表明它具有 hibernate 所需的大部分主要类文件。下载并解压 jar 显示 HibernateException 类文件存在于此。

因此,如果您使用以下条目更新您的 POM.xml

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

现在您必须让 Maven 将存储库下载到您的本地计算机(如果它不存在)并将其用于您的项目。如果您从 Elcipse 运行项目,请通过右键单击项目-> 运行方式-> Maven Clean 来执行此操作。

希望这可以帮助。

于 2013-04-12T12:04:02.710 回答
0

如果您确定 maven 已经下载了 hibernate jar,并且可以在构建生成的 jar/war 文件中使用,那么问题可能如下。

有时 Maven 无法从服务器下载完整的 JAR 文件,在这些情况下也会发生类未找到异常。

要在您的主目录中修复此 goto .m2 文件夹,请删除休眠 jar 并制作一个clean install. 这将下载新的文件集,并且应该开始工作。

您可以通过将文件作为 zip 文件打开来检查文件是否已正确下载jar tf jar-file.jar

于 2012-04-16T05:14:36.137 回答