当前位置: 首页 > 知识库问答 >
问题:

嵌套的异常是 java.lang.NoClassDef发现错误: 无法初始化类组织.springframework.jdbc.support.SQL错误代码工厂

南宫凡
2023-03-14

我正在用spring和jdbctemplate编写一个应用程序。但是,我遇到了以下错误:

org.springframework.web.util.NestedServletException: Handler processing failed; nested exception is java.lang.NoClassDefFoundError: Could not initialize class org.springframework.jdbc.support.SQLErrorCodesFactory
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:972)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

根本原因:

java.lang.NoClassDefFoundError: Could not initialize class org.springframework.jdbc.support.SQLErrorCodesFactory
org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.setDataSource(SQLErrorCodeSQLExceptionTranslator.java:89)
org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.<init>(SQLErrorCodeSQLExceptionTranslator.java:78)
org.springframework.jdbc.support.JdbcAccessor.getExceptionTranslator(JdbcAccessor.java:58)
org.springframework.jdbc.support.JdbcAccessor.afterPropertiesSet(JdbcAccessor.java:71)
org.springframework.jdbc.core.JdbcTemplate.<init>(JdbcTemplate.java:115)
com.metmi.mmasgis.dao.DbImpl.getDatabases(DbImpl.java:29)
com.metmi.mmasgis.HomeController.dbs(HomeController.java:61)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:606)
org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:213)
org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:126)
org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:96)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:617)
org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:578)
org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)

这是我的网络.xml:

<?xml version="1.0" encoding="UTF-8"?>

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"

<!-- The definition of the Root Spring Container shared by all Servlets and Filters -->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring/root-context.xml</param-value>
</context-param>

<!-- Creates the Spring Container shared by all Servlets and Filters -->
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<!-- Processes application requests -->
<servlet>
    <servlet-name>appServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>appServlet</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

我的根上下文.xml:

<?xml version="1.0" encoding="UTF-8"?>

http://www . spring framework . org/schema/beans/spring-beans . xsd "

<!-- Root Context: defines shared resources visible to all other web components -->


<bean id="dataSource" name="dataSource"
    class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="username" value="root"></property>
    <property name="password" value="abc"></property>
    <property name="url"
        value="jdbc::mysql://localhost:3306/mmasgis">
    </property>
</bean>

会有什么问题呢?

共有3个答案

宇文迪
2023-03-14

类路径中缺少Spring JDBC jar文件(主要在WEB-INF/lib下)。

请参阅此链接以清晰理解。

漆雕育
2023-03-14

缺少必需的jar,因此您必须下载必需的jar,然后设置您的类路径下载链接

慕俊迈
2023-03-14

当直接从文档中抛出< code > NoClassDefFoundError 时

如果Java虚拟机或ClassLoader实例试图加载类的定义(作为普通方法调用的一部分或作为使用新表达式创建新实例的一部分),但找不到类的定义,则会引发此错误。编译当前执行的类时,已存在搜索的类定义,但无法再找到该定义。

在您的例子中,它是Classorg.springframework.jdbc.support.SQLErrorCodesFactory。因此,我们需要在类加载期间通过提供包含该类的.jar文件将该类提供给类加载器或JVM。您正在使用Spring jdbc API。因此,需要将这个jarorg.springframework.jdbc-X.X.X.RELEASE添加到类路径中。这个jar文件可以从链接下载。我已经给出了3.0.5版本的下载链接。请将其更改为所需版本。如果您使用Maven作为构建工具,您可以将其作为依赖项添加到项目的POM文件中,如下所示

<dependency>
  <groupId>org.springframework</groupId>
  <artifactId>org.springframework.jdbc</artifactId>
  <version>3.0.5.RELEASE</version>
</dependency>

希望您能清楚地理解它,以解决此错误。

 类似资料:
  • 在“初始化Java工具”期间发生内部错误。无法初始化类org.eclipse.jdt.core。JavaConventions在Eclipse中下载AspectJ开发工具后。我在用Spring靴。 我不知道是什么问题。

  • 问题内容: 当我运行项目时,会收到此错误的大量输出: 我注意到此问题的出现方式是在整个网络上被询问,但没有真正的答案。这种错误的一般原因是什么? 问题答案: NoClassDefFound错误是一个模糊的错误,通常隐藏着更严重的问题。它是不一样的ClassNotFoundException(被抛出时,该类只是普通的不存在)。 如javadocs所示,NoClassDefFound 可能指示该类不存

  • 我需要在Gradle中查看我的依赖项,以修复多个SLF4J绑定的问题。 但是,当我运行“Gradle依赖项”时,我得到错误: 无法初始化类org.codehaus.groovy.runtime.InvokerHelper 在堆栈溢出的类似问题中,Android Studio无法初始化类org.codehaus.groovy.runtime.InvokerHelper 建议 安装Java jdk-1

  • 问题内容: 我正在尝试将程序编译为一个共享库,可以在使用ctypes的Python代码中使用该共享库。 使用以下命令,库可以正常编译: 但是,当我尝试使用ctypes导入它时 我收到以下错误: 这是怎么回事? 问题答案: 非常令人沮丧的是,没有人真正显示出具体的解决方案。安装OpenCV后出现此问题。对我来说,删除此警告最简单的方法是禁用此驱动程序:

  • 我用Xcode开发了一个“Hello iOS”应用程序,可以在iOS模拟器上用Appium进行测试。然而,当我试图在真正的iPhone/iPad设备上测试同一个应用程序时,我收到了以下错误消息。 这是我的环境。 我尝试了这个命令“brew安装--HEAD ideviceInster”,但得到了另一条错误消息。 有什么解决办法吗?谢谢