java ClassNotFoundException设置Quartz时的LoggerFactory

时间:2011-04-26 20:41:31

标签: java classpath quartz-scheduler classnotfoundexception

所以我使用的是Quartz jar:quartz-all-2.0.1.jar。从自述文件中可以看出,这个罐子应该可以设置所有东西。但是,当我尝试使用

创建SchedulerFactory时
SchedulerFactory sf = new StdSchedulerFactory();

我明白了:

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没有显示任何错误。谢谢你的帮助。

3 个答案:

答案 0 :(得分:10)

Simple Logging Facade for Java (SLF4J)文档将Quartz列为依赖于slf4j。您可以下载slf4j并将其添加到类路径中。如果没有这个问题,我不知道为什么它会更早发挥作用。

答案 1 :(得分:2)

您将需要slf4j api jar和一个实现jar。

至于为什么它不会在日食中抱怨。它只是一个运行时依赖项。您没有编译任何实际使用slf4j的代码,因此您的代码编译得很好。另一方面,当您尝试运行时,您依赖的代码(即Quartz)依赖于您现在必须提供的slf4j。

答案 2 :(得分:-1)

对于那些对maven更熟悉的人,可以将此依赖项添加到您的POM文件中:

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

然后将此库添加到项目依赖项中。