2014-01-24 15 views
2

저는 spring과 jdbctemplate을 사용하여 응용 프로그램을 작성하고 있습니다. 나는 다음과 같은 오류가 발생하고 그러나 :중첩 예외는 java.lang.NoClassDefFoundError입니다 : org.springframework.jdbc.support.SQLErrorCodesFactory 클래스를 초기화 할 수 없습니다.

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) 

근본 원인이 내 web.xml 파일입니다

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 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> 

내 루트의 context.xml :

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

http://www.springframework.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> 

무엇이 잘못 될 수 있습니까?

+0

내 대답이 도움이된다면 내 대답을 선택할 수 있습니다 – Ashish

답변

1

필수 항아리 클래스 경로 설정 후 클래스 경로에서 (주로 WEB-INF/lib 디렉토리 아래에)없는 download link

+0

덕분에 내가 제안한 것을 해주었습니다. 이제 메시지 처리기 처리에 실패했습니다. 중첩 예외는 java.lang.NoSuchMethodError입니다 : org.springframework.beans.factory.ListableBeanFactory.getBeanDefinitionNames (Ljava/lang/Class;) [Ljava/lang/String; – arpho

+0

동일한 이름 (스프링)을 가진 항아리가 1 개 이상있을 수 있습니다. 모든 스프링 항아리를 제거하고 그 항아리의 최신 버전 만 넣으십시오. – Ashish

+0

maven 의존성에있는 내 pom에서 스프링 - jdbc : 1.0-m4가 있습니다. 옳은? – arpho

0

봄 JDBC jar 파일을 필요한 항아리를 다운로드 당신이 가진 SO 누락됩니다.

명확한 이해를 위해 this link을 참조하십시오. NoClassDefFoundError가 귀하의 경우에는 문서

Thrown if the Java Virtual Machine or a ClassLoader instance tries to load in the definition of a class (as part of a normal method call or as part of creating a new instance using the new expression) and no definition of the class could be found. The searched-for class definition existed when the currently executing class was compiled, but the definition can no longer be found.

에서 직접 발생하는 경우

2

는,이 클래스 org.springframework.jdbc.support.SQLErrorCodesFactory입니다. 따라서이 클래스를 포함하는 .jar 파일을 제공하여 클래스 로딩 중에이 클래스를 클래스 로더 또는 JVM에 제공해야합니다. Spring-jdbc API를 사용하고 있습니다. 그래서,이 병을 클래스 경로에 org.springframework.jdbc-X.X.X.RELEASE 추가해야합니다. 이 jar 파일은 link에서 다운로드 할 수 있습니다. 3.0.5 버전의 다운로드 링크를 제공했습니다. 필요 버전으로 변경하십시오. 당신이 빌드 도구로 메이븐을 사용하는 경우, 당신은 당신이 그것을 명확하게이 오류를 해결하기 위해 이해이

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

희망처럼 프로젝트의 POM 파일 종속성으로 추가 할 수 있습니다.

+0

@arpho 내 대답이 도움이 되었습니까? – Keerthivasan

+1

차가움. 좋은 대답 친구 – smilyface

+0

@smilyface 고마워요! – Keerthivasan

관련 문제