2015-08-24 121 views
0

我正在开发一个Java应用程序,并希望使用Quartz Scheduling功能。我获得最新版本2.2.1并尝试从记录的示例开始。我停止了Quartz的日志系统集成。
我的Java应用程序没有记录(使用我的特殊的非标准日志记录库),并且不想使用Log4J.But Quartz通过下面的消息请求它。 如何通过编写代码(无xml文件或其他)来设置禁用日志记录功能的Quartz。我不想将任何日志jar库包含到我的应用程序中。Java Quartz Logging功能禁用源代码,不包括日志库

SchedulerFactory sf = new StdSchedulerFactory(); 
    Scheduler sched = sf.getScheduler(); 

JobDetail job = JobBuilder.newJob(Job.class) 
     .withIdentity("job1", "group1") 
     .build(); 
CronTrigger trigger = TriggerBuilder.newTrigger() 
     .withIdentity("trigger1", "group1") 
     .withSchedule(CronScheduleBuilder.cronSchedule("0/20 * * * * ?")) 
     .build(); 
sched.scheduleJob(job, trigger); 

,并得到错误

Failed to instantiate SLF4J LoggerFactory 
Reported exception: 
java.lang.NoClassDefFoundError: org/apache/log4j/Level 
    at org.slf4j.LoggerFactory.bind(LoggerFactory.java:128) 
    at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:107) 
    at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:295) 
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:269) 
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:281) 
Disconnected from the target VM, address: '127.0.0.1:53833', transport: 'socket' 
    at org.quartz.impl.StdSchedulerFactory.<init>(StdSchedulerFactory.java:303) 
    at Main2.main(Main2.java:18) 
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Level 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    ... 7 more 
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/log4j/Level 
    at org.slf4j.LoggerFactory.bind(LoggerFactory.java:128) 
    at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:107) 
    at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:295) 
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:269) 
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:281) 
    at org.quartz.impl.StdSchedulerFactory.<init>(StdSchedulerFactory.java:303) 
    at Main2.main(Main2.java:18) 
Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Level 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    ... 7 more 

回答

0

由于Quartz使用SLF4J,你必须把它配置为使用NOPLogger(无操作记录仪,一个什么也不做“虚拟日志”)。 奇怪的是这是默认配置,所以请确保您的项目中没有配置文件