1

java.lang.ClassNotFoundExceptionCronTrigger と MySQL を使用して Java でスケジューラを実行する場合

私は現在、サーバーからMySQLデータベースからデータをダウンロードし、それを固定ディレクトリに保存されたテキストファイルに入れるためにスケジューラを必要とするプロジェクトを開発しています。このタスクを実行するために CronTrigger とスケジューラを使用しています。プロジェクトは Tomcat バージョン 6.0/webapps ディレクトリに配置されます。ただし、プログラムを実行すると、この問題が発生しました。

Jul 5, 2013 3:10:00 PM org.quartz.impl.jdbcjobstore.JobStoreSupport triggerFired
SEVERE: Error retrieving job, setting trigger state to ERROR.
org.quartz.JobPersistenceException: Couldn't retrieve job because a required class was not found: bgoc.dwgScheduler.dwg_QuartzAutoDownloadJob [See nested exception: java.lang.ClassNotFoundException: bgoc.dwgScheduler.dwg_QuartzAutoDownloadJob]**<br>

at org.quartz.impl.jdbcjobstore.JobStoreSupport.retrieveJob(JobStoreSupport.java:1328)<br>
at org.quartz.impl.jdbcjobstore.JobStoreSupport.triggerFired(JobStoreSupport.java:2789)<br>
at org.quartz.impl.jdbcjobstore.JobStoreSupport$37.execute(JobStoreSupport.java:2757)<br>
at org.quartz.impl.jdbcjobstore.JobStoreSupport.executeInNonManagedTXLock(JobStoreSupport.java:3662)<br>
at org.quartz.impl.jdbcjobstore.JobStoreSupport.triggerFired(JobStoreSupport.java:2751)<br>
at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:313)<br>
Caused by: java.lang.ClassNotFoundException: bgoc.dwgScheduler.dwg_QuartzAutoDownloadJob <br>
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)<br>
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)<br>
at org.quartz.simpl.InitThreadContextClassLoadHelper.loadClass(InitThreadContextClassLoadHelper.java:74)<br>
at org.quartz.simpl.CascadingClassLoadHelper.loadClass(CascadingClassLoadHelper.java:118)<br>
at org.quartz.impl.jdbcjobstore.StdJDBCDelegate.selectJobDetail(StdJDBCDelegate.java:897)<br>
at org.quartz.impl.jdbcjobstore.JobStoreSupport.retrieveJob(JobStoreSupport.java:1316)<br>

このエラーは常に発生するわけではないため、Java コードに問題はないと確信しています。ただし、発生率は30%とかなり高いです。ただし、自分のクォーツ ファイルが正しく記述されているかどうかはわかりません。以下は、書かれたクォーツファイルです。

メイン スケジューラのプロパティを構成する ##

org.quartz.scheduler.instanceName = DefaultQuartzScheduler
org.quartz.scheduler.instanceId = one

スレッドプールの構成

org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 5
org.quartz.threadPool.threadPriority = 4

ジョブストアの構成

org.quartz.jobStore.misfireThreshold = 5000
org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.jobStore.dataSource = myDS
org.quartz.jobStore.tablePrefix = QRTZ_

データソースの構成

org.quartz.dataSource.myDS.driver = com.mysql.jdbc.Driver
org.quartz.dataSource.myDS.URL = jdbc:mysql://localhost:3307/QRTZ_BIS
org.quartz.dataSource.myDS.user = ルート
組織.quartz.dataSource.myDS.password = パスワード
org.quartz.dataSource.myDS.maxConnections 5

誰でもこの問題を解決できますか? もっと詳しい情報を知りたい場合は、投稿してください。できるだけ早く提供します。

4

2 に答える 2

1

Classloader は、クラスbgoc.dwgScheduler.dwg_QuartzAutoDownloadJobが見つからないと文句を言います。

このクラスはあなたのものですか?このクラスがクラスパスにあるかどうかを確認しましたか?

このクラスは必要ないかもしれませんが、他のクラスまたは構成がそれをインポートしている可能性があります。

于 2013-07-05T03:07:31.880 に答える