原因不明的NoClassDefFoundError异常

时间:2016-03-25 18:07:01

标签: java jdbc

  

线程“main”中的异常java.lang.NoClassDefFoundError:   组织/ springframework的/ JDBC /核心/ JdbcTemplate的           at com.citi.cate.svn.eers.SVNEERSFeeder.loadEmpInfoFromDB(SVNEERSFeeder.java:117)           在com.citi.cate.svn.eers.SVNEERSFeeder.process(SVNEERSFeeder.java:523)           在com.citi.cate.svn.eers.SVNEERSFeeder.main(SVNEERSFeeder.java:631)           at resources.TheApp.main(TheApp.java:39)引起:java.lang.ClassNotFoundException:   org.springframework.jdbc.core.JdbcTemplate           在java.net.URLClassLoader $ 1.run(URLClassLoader.java:366)           在java.net.URLClassLoader $ 1.run(URLClassLoader.java:355)           at java.security.AccessController.doPrivileged(Native Method)           在java.net.URLClassLoader.findClass(URLClassLoader.java:354)           at java.lang.ClassLoader.loadClass(ClassLoader.java:425)           at sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java:308)           at java.lang.ClassLoader.loadClass(ClassLoader.java:358)           ......还有4个

我无法找到上述错误的解决方案。最近spring-framework版本发生了变化,我改变了所有与spring-framework新版本相关的jar。我看到上面的错误。试图重新加载所有的jars.still错误存在。请帮帮我。

SVNEERSFeeder.java

line 117: JdbcTemplate jt = new JdbcTemplate(_utility.getDBConnection("csi", ""))

2 个答案:

答案 0 :(得分:2)

该异常是由于与spring版本相关的错误配置相应的spring jdbc jar 引起的。要轻松解决依赖关系,您可以使用maven: 例如,如果您使用 spring 4.2.5 ,请在maven中添加s pring jdbc依赖项,如下所示:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>4.2.5.RELEASE</version>
</dependency>

Apache Ivy依赖项:

<dependency org="org.springframework" name="spring-jdbc" rev="4.2.5.RELEASE"/>

答案 1 :(得分:0)

NoClassDefFoundError异常

如果Java虚拟机或ClassLoader实例尝试加载类的定义(作为普通方法调用的一部分或作为使用新表达式创建新实例的一部分)并且没有定义,则抛出此异常可以找到这个班级。这是因为当您的代码依赖于类文件并且它在编译时出现但在运行时未找到时。

查找构建时间和运行时类路径的差异。

在你的情况下,似乎根本原因是:

resources.TheApp.main(TheApp.java:39)引起:java.lang.ClassNotFoundException:org.springframework.jdbc.core.JdbcTemplate at

<强> ClassNotFoundException的

当您尝试在运行时对类进行反射调用时可能会导致这种情况,但程序尝试调用的类不存在。