2014-03-14 1 views
1

내 코드에는 quartz schedular의 기본 exmaple이 포함되어 있습니다. 일반적인 Java 응용 프로그램에서는 실행 중이지만 Im 번들로 변환하고 karaf에 배치하면 작동하지 않습니다.OSGI 번들처럼 작동하지 않는 석영 작업 일정

@Component 
    @Service 
    public class testImpl implements testI { 
    @Override 
    public void test() { 
    System.out.println("testImpl started"); 
    try { 

     JobDetail job = JobBuilder.newJob(TestJob.class) 
      .withIdentity("testJob") 
      .build(); 
     System.out.println("job \n"); 

     Trigger trigger = TriggerBuilder.newTrigger() 
       .withSchedule( 
        SimpleScheduleBuilder.simpleSchedule() 
        .withIntervalInSeconds(5) 
        .repeatForever()) 
         .build(); 

     System.out.println("trigger \n "); 

    //THIS PARTICULAR LINE ONWARDS THE CODE IS NOT EXCUTING IM NOT GETTING SYSOUT AFTER THIS LINE. 
    SchedulerFactory schFactory = new StdSchedulerFactory(); 
    System.out.println("scheduler \n"); 
     Scheduler sch = schFactory.getScheduler(); 


     sch.start();    
     sch.scheduleJob(job, trigger);  

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

Schedular는

java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory 
at org.quartz.impl.StdSchedulerFactory.<init>(StdSchedulerFactory.java:298) 
at com.ericsson.testImpl.testImpl.test(testImpl.java:77) 
at com.ericsson.testConsumer.testConsumer.bindTestI(testConsumer.java:27) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 

같은 예외를 던지고 있지만 내가 아는 한 Karaf은 SLF4J를위한 붙박이 지원을하고있다. 명시 적으로 slf4j 번들을 추가 할 필요가 없습니다.

답변

1

오류의 근본 원인을 발견했습니다. Quartz jar pom.xml에서 slf4j 종속성 버전은 1.6.1이고 Karaf-2.3.3 inbuilt slf4j 종속성은 1.6.6입니다. 의존성에 대한 올바른 버전으로 quartz pom을 변경하면 도움이됩니다.

0

나는 Manifest.MF 파일에서 가져 오기를 놓친다 고 확신한다.

번들의 매니페스트를 열고 "가져 오기 - 패키지"섹션에 org.slf4j가 있어야합니다. 패키지를 가져 오기 위해 누락 된 것 같습니다. 이 답변이 도움이되지 않은 경우

<build> 
    <plugins> 
     <plugin> 
     <groupId>org.apache.felix</groupId> 
     <artifactId>maven-bundle-plugin</artifactId> 
     <extensions>true</extensions> 
     <configuration> 
      <instructions> 
      <Import-Package>org.slf4j</Import-Package> 
      </instructions> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 

는 전체 스택 추적 및 MVN 의존성의 출력을 추가 : 트리에 당신은 받는다는 - 번들 플러그인을 사용하는 경우

Import-Package: .....,org.slfj,.... 

, 구성을 확장 너의 질문.

+0

나는 그것을 시도하지 않았다. – shashantrika

+0

좋아, mvn 의존성 사본 : tree + Manifest가 다음에 도움이 될 것입니다 :) –