设置Quartz时java ClassNotFoundException LoggerFactory
所以我使用的是石英罐:Quartz-all-2.0.1.jar。从自述文件来看,这个罐子应该已经设置好了一切。但是,当我尝试使用创建SchedulerFactory时设置Quartz时java ClassNotFoundException LoggerFactory,java,classpath,quartz-scheduler,classnotfoundexception,Java,Classpath,Quartz Scheduler,Classnotfoundexception,所以我使用的是石英罐: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.StdS
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)
线程“main”java.lang.NoClassDefFoundError中的异常:org/slf4j/LoggerFactory
位于org.quartz.impl.StdSchedulerFactory。(StdSchedulerFactory.java:268)
在WebScraper.Main.Main(Main.java:19)
原因:java.lang.ClassNotFoundException:org.slf4j.LoggerFactory
在java.net.URLClassLoader$1.run(URLClassLoader.java:217)
位于java.security.AccessController.doPrivileged(本机方法)
位于java.net.URLClassLoader.findClass(URLClassLoader.java:205)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:321)
位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
位于java.lang.ClassLoader.loadClass(ClassLoader.java:266)
我还感到困惑,因为在我尝试运行程序之前,Eclipse没有显示任何错误。感谢您的帮助。文档中列出了石英,具体取决于slf4j。您可以下载slf4j并将其添加到类路径中。我不知道为什么在没有这个问题的情况下它可以在早期工作。您将需要slf4j api jar和一个实现jar
至于为什么它在eclipse中没有抱怨。它只是一个运行时依赖项。您没有编译任何实际使用slf4j的代码,因此您的代码编译得很好。另一方面,当您尝试运行时,您所依赖的代码(即Quartz)对您现在必须提供的slf4j具有依赖性。对于那些更熟悉maven的人,您可以将此依赖性添加到POM文件中:
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.5.6</version>
</dependency>
org.slf4j
slf4j-log4j12
1.5.6
然后将此库添加到项目依赖项中 slf4j下载有一堆.jar。我试着包括slf4j-ext-1.6.1.jar和slf4j-simple-1.6.1.jar,因为它们看起来最有前途。但我不知道使用哪一种是cannonical slf4j。我添加了slf4j-api-1.6.1.jar和slf4j-simple-1.6.1.jar使其工作。第一句话没有意义。应该读到Quartz依赖于slf4j。它显然使用了类查找。这意味着它并不直接依赖于它。它只取决于它是否在类路径中,因此当类装入器查找它时,它会找到它。它不需要类,所以以前从未尝试过加载它,但调度器确实调用类加载器并点击hissyfitville。