0

石英 2.1.7 玩 2.1

我已经设置了quartz 以使用JDBC 作业存储来存储所有作业详细信息和触发器。这是我的配置

org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 3
org.quartz.scheduler.instanceName = Sched1
org.quartz.scheduler.instanceId = 1
org.quartz.scheduler.rmi.export = false
org.quartz.scheduler.rmi.proxy = false

org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass =          
org.quartz.impl.jdbcjobstore.StdJDBCDelegate

org.quartz.jobStore.dataSource = TaskScheduler
org.quartz.dataSource.TaskScheduler.driver = com.mysql.jdbc.Driver
org.quartz.dataSource.TaskScheduler.URL = jdbc:mysql://localhost:3306/quartz    
org.quartz.dataSource.TaskScheduler.user = quartz
org.quartz.dataSource.TaskScheduler.password = quartz
org.quartz.dataSource.TaskScheduler.maxConnections = 1

安排新工作后,我得到了这些异常

org.quartz.JobPersistenceException: Couldn't retrieve job because a required class was not found: jobs.Counter [See nested exception: java.lang.ClassNotFoundException: jobs.Counter]
at org.quartz.impl.jdbcjobstore.JobStoreSupport.retrieveJob(JobStoreSupport.java:1378)
at org.quartz.impl.jdbcjobstore.JobStoreSupport$9.execute(JobStoreSupport.java:1366)
at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3798)
at org.quartz.impl.jdbcjobstore.JobStoreTX.executeInLock(JobStoreTX.java:93)
at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeWithoutLock(JobStoreSupport.java:3703)
at org.quartz.impl.jdbcjobstore.JobStoreSupport.retrieveJob(JobStoreSupport.java:1363)
at org.quartz.core.QuartzScheduler.getJobDetail(QuartzScheduler.java:1465)
at org.quartz.impl.StdScheduler.getJobDetail(StdScheduler.java:489)
at utils.SchedulerUtils.getAlljob(SchedulerUtils.java:44)
at controllers.Task.index(Task.java:23)
at Routes$$anonfun$routes$1$$anonfun$applyOrElse$2$$anonfun$apply$2.apply(routes_routing.scala:65)
at Routes$$anonfun$routes$1$$anonfun$applyOrElse$2$$anonfun$apply$2.apply(routes_routing.scala:65)
at play.core.Router$HandlerInvoker$$anon$6$$anon$2.invocation(Router.scala:141)
at play.core.Router$Routes$$anon$1.invocation(Router.scala:322)
at play.core.j.JavaAction$$anon$1.call(JavaAction.scala:31)
at play.core.j.JavaAction$$anon$2.apply(JavaAction.scala:74)
at play.core.j.JavaAction$$anon$2.apply(JavaAction.scala:73)
at play.libs.F$Promise$PromiseActor.onReceive(F.java:420)
at akka.actor.UntypedActor$$anonfun$receive$1.applyOrElse(UntypedActor.scala:159)
at akka.actor.ActorCell.receiveMessage(ActorCell.scala:425)
at akka.actor.ActorCell.invoke(ActorCell.scala:386)
at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:230)
at akka.dispatch.Mailbox.run(Mailbox.scala:212)
at akka.dispatch.ForkJoinExecutorConfigurator$MailboxExecutionTask.exec(AbstractDispatcher.scala:502)
at scala.concurrent.forkjoin.ForkJoinTask.doExec(ForkJoinTask.java:262)
at scala.concurrent.forkjoin.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:975)
at scala.concurrent.forkjoin.ForkJoinPool.runWorker(ForkJoinPool.java:1478)
at scala.concurrent.forkjoin.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:104)
Caused by: java.lang.ClassNotFoundException: jobs.Counter
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at sbt.PlayCommands$$anonfun$53$$anonfun$55$$anon$2.loadClass(PlayCommands.scala:535)
at org.quartz.simpl.InitThreadContextClassLoadHelper.loadClass(InitThreadContextClassLoadHelper.java:72)
at org.quartz.simpl.CascadingClassLoadHelper.loadClass(CascadingClassLoadHelper.java:114)
at org.quartz.simpl.CascadingClassLoadHelper.loadClass(CascadingClassLoadHelper.java:138)
at org.quartz.impl.jdbcjobstore.StdJDBCDelegate.selectJobDetail(StdJDBCDelegate.java:873)
at org.quartz.impl.jdbcjobstore.JobStoreSupport.retrieveJob(JobStoreSupport.java:1373)
... 27 more

浏览后,有人建议添加这两个属性,但这似乎没有帮助

org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true
org.quartz.scheduler.threadsInheritContextClassLoaderOfInitializer = true

有没有人遇到同样的问题并找到了解决方案?

4

1 回答 1

0

尝试在你的 app 文件夹中创建一个包库并在那里添加 Quartz 的库。

于 2013-04-03T12:29:33.647 回答