2014-08-28 4 views
1

애플리케이션을 전개하려고 시도하지만 콘솔에이 오류가 표시됩니다. 스프링 MVC 및 스프링 스케줄러에 익숙하지 않습니다. 이것은 나의 첫 번째 프로젝트입니다.스프링 스케쥴링 문제 : org.springframework.beans.factory.BeanCreationException :

SEVERE: Context initialization failed 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [Beans.xml]: Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError: org/springframework/aop/support/AopUtils 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:527) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) 
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) 
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585) 
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464) 
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:384) 
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283) 
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111) 
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4939) 
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434) 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 
at java.util.concurrent.FutureTask.run(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 
Caused by: java.lang.NoClassDefFoundError: org/springframework/aop/support/AopUtils 
at org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor.postProcessAfterInitialization(ScheduledAnnotationBeanPostProcessor.java:113) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:407) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1461) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 
... 20 more 
Caused by: java.lang.ClassNotFoundException: org.springframework.aop.support.AopUtils 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702) 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547) 
... 24 more 

Aug 28, 2014 10:10:16 PM org.apache.catalina.core.StandardContext listenerStart 
SEVERE: Exception sending context initialized event to listener instance of class  
org.springframework.web.context.ContextLoaderListener 
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [Beans.xml]: Initialization of bean failed; nested exception is java.lang.NoClassDefFoundError:  org/springframework/aop/support/AopUtils 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:527) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456) 
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225) 
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291) 
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585) 
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464) 
at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:384) 
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:283) 
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111) 
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4939) 
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434) 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 
at java.util.concurrent.FutureTask.run(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
at java.lang.Thread.run(Unknown Source) 
Caused by: java.lang.NoClassDefFoundError: org/springframework/aop/support/AopUtils 
at  org.springframework.scheduling.annotation.ScheduledAnnotationBeanPostProcessor.postProcessAfterInitialization(ScheduledAnnotationBeanPostProcessor.java:113) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:407) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1461) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519) 
... 20 more 
Caused by: java.lang.ClassNotFoundException: org.springframework.aop.support.AopUtils 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702) 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547) 
... 24 more 

이후

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:task="http://www.springframework.org/schema/task" 
xmlns:util="http://www.springframework.org/schema/util" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans   http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd 
    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd 
    http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.0.xsd"> 

<!-- Initialization for data source --> 
<bean id="dataSource" 
    class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 
    <property name="driverClassName" value="com.mysql.jdbc.Driver" /> 
    <property name="url" value="jdbc:mysql://localhost:3306/student_records" /> 
    <property name="username" value="root" /> 
    <property name="password" value="password" /> 
</bean> 

<!-- Definition for studentJDBCTemplate bean --> 
<bean id="studentJDBCTemplate" class="com.tutorialspoint.dao.impl.StudentJDBCTemplate"> 
    <property name="dataSource" ref="dataSource" /> 
</bean> 

<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> 
<!-- BATCH MODULES --> 
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> 
    <task:annotation-driven /> 
    <bean id="scheduleCsvParse" class="com.tutorialspoint.batch.ScheduleCsvParse" /> 
</beans> 

beans.xml 환경 코드, 이것은 스프링 MVC이다. Full-Spring.xml을 사용하여 "Full-Spring"프로젝트에 권한을 부여했습니다.

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation=" 
    http://www.springframework.org/schema/beans  
    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 

    <context:component-scan base-package="com.tutorialspoint" /> 

    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 
     <property name="prefix" value="/WEB-INF/pages/" /> 
     <property name="suffix" value=".jsp" /> 
    </bean> 

</beans> 

의 web.xml은

<web-app id="WebApp_ID" version="2.4" 
xmlns="http://java.sun.com/xml/ns/j2ee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 

<display-name>Spring MVC Form Handling</display-name> 

<servlet> 
    <servlet-name>FullSpring</servlet-name> 
    <servlet-class> 
     org.springframework.web.servlet.DispatcherServlet 
    </servlet-class> 
    <load-on-startup>1</load-on-startup> 
</servlet> 

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

    <context-param> 
    <param-name>contextConfigLocation</param-name> 
    <param-value>classpath:Beans.xml</param-value> 
    </context-param> 
    <listener> 
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 
    </listener> 

</web-app> 

ScheduleCsvParse.class이 구성된다.

package com.tutorialspoint.batch; 

import java.io.BufferedReader; 
import java.io.FileNotFoundException; 
import java.io.FileReader; 
import java.io.IOException; 

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.scheduling.annotation.Scheduled; 

import com.tutorialspoint.dao.impl.StudentJDBCTemplate; 

public class ScheduleCsvParse { 

@Autowired 
private StudentJDBCTemplate studentJDBCTemplate; 

public StudentJDBCTemplate getStudentJDBCTemplate() { 
    return studentJDBCTemplate; 
} 

@Scheduled(cron="*/5 * * * * ?") 
public void parseCsvFile() { 
    System.out.println("Entered parseCsvFile"); 

    String csvFile = "C:/Users/Paul.Aragones/Documents/Full-Spring3/FullSpring/sample/StudentRecords.csv"; 
    BufferedReader br = null; 
    String line = ""; 
    String cvsSplitBy = ","; 

    try { 

     br = new BufferedReader(new FileReader(csvFile)); 
     while ((line = br.readLine()) != null) { 
      String[] row = line.split(cvsSplitBy); 
      studentJDBCTemplate.create(row[1], Integer.parseInt(row[0])); 
     } 

    } catch (FileNotFoundException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } finally { 
     if (br != null) { 
      try { 
       br.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } 

    System.out.println("Done"); 
    System.out.println("Exited parseCsvFile"); 
    } 

} 

내 StudentJDBCTemplate.class

package com.tutorialspoint.dao.impl; 

import java.util.List; 

import javax.sql.DataSource; 

import org.springframework.jdbc.core.JdbcTemplate; 

import com.tutorialspoint.bean.Student; 
import com.tutorialspoint.dao.StudentDAO; 
import com.tutorialspoint.mapper.StudentMapper; 

public class StudentJDBCTemplate implements StudentDAO { 
    private DataSource dataSource; 
    private JdbcTemplate jdbcTemplateObject; 

    public void setDataSource(DataSource dataSource) { 
     this.dataSource = dataSource; 
     this.jdbcTemplateObject = new JdbcTemplate(dataSource); 
    } 

    public void create(String name, Integer age) { 
     String SQL = "insert into Student (name, age) values (?, ?)"; 

     jdbcTemplateObject.update(SQL, name, age); 
     System.out.println("Created Record Name = " + name + " Age = " + age); 

    } 

    public Student getStudent(Integer id) { 
     String SQL = "select * from Student where id = ?"; 
     Student student = jdbcTemplateObject.queryForObject(SQL, 
         new Object[]{id}, new StudentMapper()); 
     return student; 
    } 

    public List<Student> listStudents() { 
     String SQL = "select * from Student"; 
     List <Student> students = jdbcTemplateObject.query(SQL, 
           new StudentMapper()); 
     return students; 
    } 

    public void delete(Integer id){ 
     String SQL = "delete from Student where id = ?"; 
     jdbcTemplateObject.update(SQL, id); 
     System.out.println("Deleted Record with ID = " + id); 
     return; 
    } 

    public void update(Integer id, String name, Integer age){ 
     String SQL = "update Student set name = ?, age = ? where id = ?"; 
     jdbcTemplateObject.update(SQL, name, age, id); 
     System.out.println("Updated Record with ID = " + id); 
     return; 
    } 

} 

나는 봄 - 스케줄러를 설정하는 시도하기 전에이 프로그램이 실행됩니다. 특히이 구성 요소를 Beans.xml의 <task:annotation-driven /> 태그를 추가하려고하면 오류가 발생한 곳입니다. 스케줄러를 실행하기 위해이 구성을 올바르게 수정하는 방법을 알고 있습니까?

감사합니다.

+0

이'java.lang.NoClassDefFoundError'되는 다음과 같은 의존성을 추가합니다. 필요한 모든 spring jar가 classpath에 있는지 확인하십시오. – Adi

+0

이상 : java.lang.NoClassDefFoundError : org/springframework/aop/support/AopUtils. 클래스 경로를 확인하십시오. – Julien

답변

1

당신의 pom.xml

<dependency> 
    <groupId>org.springframework</groupId> 
    <artifactId>spring-aop</artifactId> 
    <version>3.2.3.RELEASE</version> 
</dependency> 
+0

안녕하세요 Ekansh, 도움과 답장을 보내 주셔서 감사합니다. 내 코드에'org.springframework.aop-3.1.0.RELEASE.jar'을 추가했지만 여전히 오류가 있습니다. 나는' '태그가 오류를 나타내는 코드에 무엇을했는지 모른다. 'SEVERE : 컨텍스트 초기화에 실패했습니다. org.springframework.beans.factory.BeanCreationException : 'org.springframework.context.annotation.internalAsyncAnnotationProcessor'라는 이름의 빈을 만드는 동안 오류가 발생했습니다 : init 메소드를 호출하지 못했습니다. 중첩 예외는 java.lang.NoClassDefFoundError입니다 : org/aopalliance/aop/Advice ' –

+0

@PaulaKristin 당신은 또한 opalliance.jar가 필요해 보입니다. http://sourceforge.net/projects/aopalliance/files/aopalliance/1.0/에서이 링크를 가져와 필요없는 클래스가 없기 때문에 불쾌감을 느끼지 마십시오. –

+0

알겠습니다. 알랭, 고마워! :) –