使用NamedParameterJdbcTemplate时发生异常

时间:2014-03-07 07:11:51

标签: java eclipse spring maven jdbc

当我使用NamedParameterJdbcTemplate时,我得到一个异常"No class Def Found Error"。但是当我使用JdbcTemplate时,我没有得到任何异常。它工作。只有当我使用NamedParameterJdbcTemplate时才会发生异常我得到以下例外。

Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/core/SpringProperties
    at org.springframework.jdbc.core.StatementCreatorUtils.<clinit>(StatementCreatorUtils.java:80)
    at org.springframework.jdbc.core.namedparam.BeanPropertySqlParameterSource.getSqlType(BeanPropertySqlParameterSource.java:103)
    at org.springframework.jdbc.core.namedparam.NamedParameterUtils.buildSqlParameterList(NamedParameterUtils.java:415)
    at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.getPreparedStatementCreator(NamedParameterJdbcTemplate.java:373)
    at org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate.update(NamedParameterJdbcTemplate.java:311)
    at com.harsh.spring.test.OffersDAO.update(OffersDAO.java:49)
    at com.harsh.spring.test.App.main(App.java:21)
Caused by: java.lang.ClassNotFoundException: org.springframework.core.SpringProperties

任何人都可以帮助我。

5 个答案:

答案 0 :(得分:4)

确保包含所有执行依赖项。我建议你考虑一些带有声明性依赖关系管理的自动构建工具。例如,maven可以使用http://projects.spring.io/spring-framework/中可以找到的片段将您需要的每个传递依赖包装到您的应用程序中:

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-context</artifactId>
        <version>4.0.2.RELEASE</version>
    </dependency>
</dependencies>

答案 1 :(得分:2)

相同的Spring核心版本问题。我在pom.xml

中有这个
<dependency>
    <groupId>springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>1.2.6</version>
</dependency>

并获得了java.lang.NoClassDefFoundError

我将其替换为:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-core</artifactId>
    <version>4.1.1.RELEASE</version>
</dependency>

然后一切正常。

答案 2 :(得分:0)

我在maven <spring.version>3.2.0.RELEASE</spring.version>

中使用时遇到了同样的错误

然后我改为<spring.version>4.0.2. RELEASE</spring>。版本,现在它运作良好。

答案 3 :(得分:0)

我遇到了同样的问题。我做了什么...在我的日食&gt;项目浏览器&gt;项目&gt; Maven依赖项。它向我展示了一些3.0.0版本的spring依赖项。我只需右键单击所有选项,然后从选项中选择Maven,然后选择Exclude Maven Artifacts。之后,我在pom中添加了所有spring 4.3.9依赖项。它奏效了。

答案 4 :(得分:0)

确保在pom.xml中拥有所有这些依赖项

       <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
     <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>       
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>