2011-04-26 19 views
9

Así que estoy usando el Quartz jar: quartz-all-2.0.1.jar. Del archivo Léame, se supone que ese contenedor tiene todo configurado. Sin embargo, cuando intento crear un SchedulerFactory usandojava ClassNotFoundException LoggerFactory al configurar Quartz up

SchedulerFactory sf = new StdSchedulerFactory(); 

me sale esto:

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) 

también estoy confundido porque Eclipse no muestra ningún error antes de intentar ejecutar el programa. Gracias por cualquier ayuda.

Respuesta

10

La documentación de Simple Logging Facade for Java (SLF4J) enumera Quartz como dependiendo de slf4j. Puede descargar slf4j y agregarlo a su classpath. No tengo idea de por qué funcionó antes sin este problema.

+0

La descarga slf4j tiene un montón de .jars. Intenté incluir slf4j-ext-1.6.1.jar y slf4j-simple-1.6.1.jar porque parecían los más prometedores. Pero no pude decir cuál fue el canonical slf4j para usar. – Kevin

+3

Agregué slf4j-api-1.6.1.jar y slf4j-simple-1.6.1.jar para que funcione. – Kevin

+1

Esa primera oración no tiene sentido. Debería leer que Quartz tiene una dependencia en slf4j. – Robin

2

Necesitará el tarro slf4j api y un tarro de implementación.

En cuanto a por qué no se queja en eclipse. Es solo una dependencia de tiempo de ejecución. No está compilando ningún código que realmente use slf4j, por lo que su código compila muy bien. Por otro lado, cuando intenta ejecutar, el código del que depende (por ejemplo, Quartz) tiene una dependencia en slf4j que ahora debe proporcionar.

0

Para aquellos que son más cómodos con experto podría agregar esta dependencia a su archivo POM:

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

y luego añadir esta biblioteca a su dependencia del proyecto.

Cuestiones relacionadas