2016-07-01 2 views
3

나는 스프링 어노테이션 된 스케줄러 프로그램을 작성했지만 실행하면 게시 제목에 오류 메시지가 표시됩니다.java.lang.ClassNotFoundException : org.springframework.core.ResolvableTypeProvider

SchedulerConfig.java

import java.util.concurrent.Executor; 
import java.util.concurrent.Executors; 

import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.scheduling.annotation.EnableScheduling; 
import org.springframework.scheduling.annotation.SchedulingConfigurer; 
import org.springframework.scheduling.config.ScheduledTaskRegistrar; 

import com.fwd.pmap.scheduler.SchedulerApp; 

@Configuration 
@EnableScheduling 
public class SchedulerConfig implements SchedulingConfigurer { 

    @Bean 
    public SchedulerApp bean() { 
     return new SchedulerApp(); 
    } 

    @Override 
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { 
     taskRegistrar.setScheduler(taskExecutor()); 
    } 

    @Bean(destroyMethod="shutdown") 
    public Executor taskExecutor() { 
     return Executors.newScheduledThreadPool(4); 
    } 
} 

SchedulerApp.java

import org.springframework.scheduling.annotation.Scheduled; 
import org.springframework.stereotype.Component; 

import com.fwd.pmap.memberInterfaceFile.CsvReader; 
import com.fwd.pmap.memberInterfaceFile.CsvWriter;; 

@Component 
public class SchedulerApp 
{ 
    @Scheduled(cron="0 0 17 * ? *") 
    public void importInterfaceFile() 
    { 
     CsvReader reader = new CsvReader(); 
     try { 
      reader.importInterfaceFile(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

    @Scheduled(cron="0 0 6 * ? *") 
    public void generateInterfaceFile() 
    { 
     CsvWriter writer = new CsvWriter(); 
     try { 
      writer.generateInterfaceFile(); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

그리고 메인 클래스는

import org.springframework.context.annotation.AnnotationConfigApplicationContext; 
import org.springframework.context.support.AbstractApplicationContext; 

public class SchedulerMain 
{ 
    @SuppressWarnings({ "unused", "resource" }) 
    public static void main(String[] args) { 
     AbstractApplicationContext context = new AnnotationConfigApplicationContext(SchedulerConfig.class); 
    } 
} 

은 내가 가진 오류 메시지가 스케줄러 작업을 시작합니다 :

Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/core/ResolvableTypeProvider 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:760) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) 
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at com.fwd.pmap.scheduler.SchedulerMain.main(SchedulerMain.java:10) 
Caused by: java.lang.ClassNotFoundException: org.springframework.core.ResolvableTypeProvider 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    ... 13 more 

의 pom.xml 그것은 내가 최근에 코드를 다시 방문까지 2 달 전 잘 작동하는 사용이 깨진 것을 발견

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 
    <groupId>com.fwd</groupId> 
    <artifactId>fwd-PMAP</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>war</packaging> 

    <properties> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <java.version>1.8</java.version> 
    <jboss.version>3.0.2.Final-redhat-15</jboss.version> 
    <maven-compiler-plugin.version>3.5.1</maven-compiler-plugin.version> 
    <maven-war-plugin.version>2.6</maven-war-plugin.version> 

    <!-- Spring --> 
    <spring-framework.version>4.0.3.RELEASE</spring-framework.version> 

    <!-- Hibernate/JPA --> 
    <hibernate.version>4.2.21.Final</hibernate.version> 

    <!-- Logging --> 
    <logback.version>1.1.7</logback.version> 

    <!-- Restlet --> 
    <restlet.version>2.3.4</restlet.version> 
    <commons-lang.version>3.4</commons-lang.version> 
    <jackson.version>2.7.1</jackson.version> 
    </properties> 

    <dependencies> 
    <dependency> 
     <groupId>org.jboss.spec</groupId> 
     <artifactId>jboss-javaee-6.0</artifactId> 
     <version>${jboss.version}</version> 
     <type>pom</type> 
     <scope>provided</scope> 
     <exclusions> 
     <exclusion> 
      <artifactId>jboss-jaxrs-api_1.1_spec</artifactId> 
      <groupId>org.jboss.spec.javax.ws.rs</groupId> 
     </exclusion> 
     </exclusions> 
    </dependency> 

    <!-- Spring ORM support --> 
    <dependency> 
     <groupId>org.springframework</groupId> 
     <artifactId>spring-orm</artifactId> 
     <version>${spring-framework.version}</version> 
    </dependency> 

    <!-- Spring Scheduler --> 
    <dependency> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter</artifactId> 
     <version>1.3.3.RELEASE</version> 
    </dependency> 

    <!-- Logging --> 
    <dependency> 
     <groupId>ch.qos.logback</groupId> 
     <artifactId>logback-classic</artifactId> 
     <version>${logback.version}</version> 
    </dependency> 

    <!-- Hibernate --> 
    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>${hibernate.version}</version> 
    </dependency> 

    <!-- Super CSV --> 
    <dependency> 
     <groupId>net.sf.supercsv</groupId> 
     <artifactId>super-csv</artifactId> 
     <version>2.4.0</version> 
    </dependency> 

    <!-- Excel Writer --> 
    <dependency> 
     <groupId>org.apache.poi</groupId> 
     <artifactId>poi</artifactId> 
     <version>3.9</version> 
    </dependency> 

    <!-- Copy POJO to POJO --> 
    <dependency> 
     <groupId>org.modelmapper</groupId> 
     <artifactId>modelmapper</artifactId> 
     <version>0.7.5</version> 
    </dependency> 

    <!-- Restlet --> 
    <dependency> 
     <groupId>org.restlet.jee</groupId> 
     <artifactId>org.restlet.ext.servlet</artifactId> 
     <version>${restlet.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.restlet.jse</groupId> 
     <artifactId>org.restlet.ext.json</artifactId> 
     <version>${restlet.version}</version> 
    </dependency> 

    <dependency> 
     <groupId>org.apache.commons</groupId> 
     <artifactId>commons-lang3</artifactId> 
     <version>${commons-lang.version}</version> 
    </dependency> 

    <!-- JSON --> 
    <dependency> 
     <groupId>org.glassfish</groupId> 
     <artifactId>javax.json</artifactId> 
     <version>1.0.4</version> 
    </dependency> 

    <dependency> 
     <groupId>com.fasterxml.jackson.core</groupId> 
     <artifactId>jackson-databind</artifactId> 
     <version>${jackson.version}</version> 
    </dependency> 

    </dependencies> 

    <build> 
    <finalName>${project.artifactId}</finalName> 

    <pluginManagement> 
     <plugins> 
     <plugin> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-maven-plugin</artifactId> 
     </plugin> 

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>${maven-war-plugin.version}</version> 
      <configuration> 
      <failOnMissingWebXml>false</failOnMissingWebXml> 
      </configuration> 
     </plugin> 

     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>${maven-compiler-plugin.version}</version> 
      <configuration> 
      <source>${java.version}</source> 
      <target>${java.version}</target> 
      <failOnMissingWebXml>false</failOnMissingWebXml> 
      </configuration> 
     </plugin> 
     </plugins> 
    </pluginManagement> 
    </build> 
</project> 

. 누구든지 포인터를 줄 수 있습니까?

+1

의존성 트리에서 스프링 코어 용기가 보입니까? – Apostolos

+0

@Apostolos 네, Maven Dependencies 라이브러리에서'spring-core-4.0.3.RELEASE.jar'을 볼 수 있습니다. – Maruli

+0

스프링 코어 4.0.3 또는 다른 버전의 스프링 코어도 보입니까? – Apostolos

답변

1

cd 프로젝트 디렉토리에 있습니다.

사용 : 당신의 lib 디렉토리 항아리의 충돌 버전이있는 경우

mvn dependency:tree 

볼 수 있습니다.

+0

프로젝트 디렉터리에 들어가서 위의 명령을 실행하면'mvn이 내부 또는 외부 명령 인 작동 가능 프로그램 또는 배치 파일로 인식되지 않습니다. '라는 메시지가 나타납니다. 보통 – Maruli

+0

정상입니다. paven 변수에 maven/bin 경로를 설정해야합니다. – Apostolos

+0

@Apostolos maven/bin 위치가 어디에 있는지 잘 모르겠습니다. 참고로 저는 JBoss를 사용하고 있습니다. 나는 어떤 의미가 있기를 바랍니다. – Maruli

관련 문제