2011-04-26 27 views
9

所以我使用Quartz jar:quartz-all-2.0.1.jar。從自述中可以看出,該罐子應該有一切設置。然而,當我嘗試創建使用Java ClassNotFoundException LoggerFactory設置Quartz時

SchedulerFactory sf = new StdSchedulerFactory(); 

一個SchedulerFactory我得到這個:

Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory 
    at org.quartz.impl.StdSchedulerFactory.<init>(StdSchedulerFactory.java:268) 
    at WebScraper.Main.main(Main.java:19) 
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266) 

我也困惑,因爲Eclipse不顯示任何錯誤之前,我嘗試運行該程序。謝謝你的幫助。

回答

10

Simple Logging Facade for Java (SLF4J)文檔列出了依賴於slf4j的Quartz。您可以下載slf4j並將其添加到您的類路徑中。我不知道爲什麼它沒有這個問題的早期工作。

+0

slf4j下載有一堆.jars。我試過包括slf4j-ext-1.6.1.jar和slf4j-simple-1.6.1.jar,因爲它們看起來最有前途。但我無法分辨使用哪個cannonical slf4j。 – Kevin 2011-04-26 20:55:37

+3

我添加了slf4j-api-1.6.1.jar和slf4j-simple-1.6.1.jar以使其工作。 – Kevin 2011-04-26 21:01:38

+1

第一句話沒有意義。它應該讀取Quartz對slf4j的依賴。 – Robin 2011-04-26 21:08:07

2

你將需要slf4j api jar和一個實現jar。

至於爲什麼它不會在日食中抱怨。它只是一個運行時依賴項。你沒有編譯任何實際使用slf4j的代碼,所以你的代碼編譯得很好。另一方面,當你嘗試運行時,你依賴的代碼(即Quartz)依賴於你現在必須提供的slf4j。

0

對於那些誰是更舒適的使用Maven,你可以添加這個依賴於你的POM文件:

<dependency> 
    <groupId>org.slf4j</groupId> 
    <artifactId>slf4j-log4j12</artifactId> 
    <version>1.5.6</version> 
</dependency> 

,然後將此庫添加到您的項目依賴。