2014-03-14 44 views
1

我的代碼包含石英schedular的基本exmaple ..在正常的Java應用程序它的運行,但當我把它轉換爲一個捆綁包和部署它在卡拉夫它不工作。石英作業schedular不工作作爲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(); 
    } 
} 

程序器拋出異常喜歡

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內置slf4j依賴版本是1.6.6。使用正確的版本更改石英pom可以提供幫助。

0

我很確定,你錯過了在你的Manifest.MF文件中的導入。

打開你的包的清單,在「導入包」部分應該有org.slf4j。看來你缺少導入包。

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

如果你使用maven-捆插件,擴展您的配置:

<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依賴的輸出:樹你的問題。

+0

我試過沒有幫助。 – shashantrika

+0

好的,mvn依賴項的副本:tree + Manifest會在下次幫助:) –