2011-04-26 23 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> 

,然后将此库添加到您的项目依赖。