10

所以我使用的是 Quartz jar:quartz-all-2.0.1.jar。从自述文件中,该 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 没有显示任何错误。谢谢你的帮助。

4

3 回答 3

10

Simple Logging Facade for Java (SLF4J)文档将Quartz 列为依赖于 slf4j。您可以下载 slf4j 并将其添加到您的类路径中。我不知道为什么它在没有这个问题的情况下更早地工作。

于 2011-04-26T20:46:52.857 回答
2

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

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

于 2011-04-26T21:05:49.063 回答
-1

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

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

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

于 2014-11-10T08:07:20.327 回答