我在oracle DB中使用Shedlock,我遵循了这个文档,在异常之后,我还在表中添加了第5列“now https://github.com/lukas-krecan/ShedLock (3) NULL”。它是当前唯一运行的实例。
这是我的配置
@Scheduled(fixedRateString = "${schedules}" )
@SchedulerLock(name = "Milmes08",lockAtLeastForString = "PT70S", lockAtMostForString = "PT70S")
@GetMapping
public TransferAllOut transferAll() throws Exception {
//code
}这是已配置的bean
@Bean
public LockProvider lockProvider(@Qualifier("oracleDataSource") DataSource dataSource) {
return new JdbcTemplateLockProvider(dataSource);
}这是表格
CREATE TABLE shedlock(
name VARCHAR(64),
lock_until TIMESTAMP(3) NULL,
locked_at TIMESTAMP(3) NULL,
locked_by VARCHAR(255),
now TIMESTAMP(3) NULL,
PRIMARY KEY (name))
以及调度的启用
@EnableScheduling
@SpringBootApplication
@EnableSchedulerLock(defaultLockAtMostFor = "PT5M")
public class JswMilme08ApiApplication {
public static void main(String[] args) {
SpringApplication.run(JswMilme08ApiApplication.class, args);
}这是个例外
scheduling-1] o.s.s.s.TaskUtils$LoggingErrorHandler 2021-03-03 13:52:29 - Unexpected error occurred
in scheduled task
java.lang.NoClassDefFoundError: net/javacrumbs/shedlock/core/ClockProvider
at
net.javacrumbs.shedlock.provider.jdbctemplate.SqlStatementsSource.params(SqlStatementsSource.java:86)
at net.javacrumbs.shedlock.provider.jdbctemplate.JdbcTemplateStorageAccessor.params(JdbcTemplateStorageAccessor.java:117)
at net.javacrumbs.shedlock.provider.jdbctemplate.JdbcTemplateStorageAccessor.lambda$insertRecord$0(JdbcTemplateStorageAccessor.java:65)
at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140)
at net.javacrumbs.shedlock.provider.jdbctemplate.JdbcTemplateStorageAccessor.insertRecord(JdbcTemplateStorageAccessor.java:64)
at net.javacrumbs.shedlock.support.StorageBasedLockProvider.doLock(StorageBasedLockProvider.java:77)
at net.javacrumbs.shedlock.support.StorageBasedLockProvider.lock(StorageBasedLockProvider.java:61)
at net.javacrumbs.shedlock.core.DefaultLockingTaskExecutor.executeWithLock(DefaultLockingTaskExecutor.java:50)
at net.javacrumbs.shedlock.core.DefaultLockingTaskExecutor.executeWithLock(DefaultLockingTaskExecutor.java:39)
at net.javacrumbs.shedlock.core.DefaultLockManager.executeWithLock(DefaultLockManager.java:51)
at net.javacrumbs.shedlock.core.LockableRunnable.run(LockableRunnable.java:35)
at org.springframework.scheduling.support.DelegatingErrorHandlingRunnable.run(DelegatingErrorHandlingRunnable.java:54)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
at java.base/java.util.concurrent.FutureTask.runAndReset(FutureTask.java:305)
at java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:305)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.ClassNotFoundException: net.javacrumbs.shedlock.core.ClockProvider
at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:471)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
... 18 common frames omitted发布于 2021-03-04 15:20:27
NoClassDefFoundError通常是由您的依赖项的某些问题引起的。在这种情况下,我猜您的class-path中有旧版本的shedlock-core。
https://stackoverflow.com/questions/66456980
复制相似问题