精华内容
下载资源
问答
  • quartz报错
    2019-09-27 03:49:53

    最近在做一个调度平台改造的项目,quartz在测试环境跑的是单机环境,生产上两台服务器做集群。

    测试环境是ok的,生产上线后报错,一个类java.lang.classNotFoundException(注明:这个类被别人修改了名称,现在使用的新名字)

    第一次:失败

    从代码上排除了对旧的job类的引用(配置文件和类都排除了)

    推测是服务器缓存了该类。

    尝试:

      清除缓存,重启服务器,仍然报上述错误。

    第二次:失败

       将生产上的配置拉到测试环境上,反复测试,重启服务器时会自动清除缓存。

    推测是quartz的那个类为全局变量,在生产上会做同步。

      尝试:

       在测试环境上再次搭建一台调度服务器,从生产上将配置和执行全部拉到测试环境上,执行ok

      反复调试,仍然没有发现同步的迹象。

      没有重现生产上的异常,不敢上线了。

    第三次:失败

     那么这个旧的job类究竟从哪里调用的?找不到头绪!会不会保存到数据库吧?

     当时觉得这个想法很搞笑,从设计的角度上来说,quartz应该不允许将别的类引入到自己的体系吧。

     但也没路可走,就查看数据库,看看有没有保存在数据库中。你猜对了,它对原原本本的躺在数据库的表中:

    CREATE TABLE QRTZ_JOB_DETAILS(
    JOB_NAME VARCHAR(200) NOT NULL,
    JOB_GROUP VARCHAR(200) NOT NULL,
    DESCRIPTION VARCHAR(250) NULL,
    JOB_CLASS_NAME VARCHAR(250) NOT NULL,
    IS_DURABLE VARCHAR(1) NOT NULL,
    IS_VOLATILE VARCHAR(1) NOT NULL,
    IS_STATEFUL VARCHAR(1) NOT NULL,
    REQUESTS_RECOVERY VARCHAR(1) NOT NULL,
    JOB_DATA BLOB NULL,
    PRIMARY KEY (JOB_NAME,JOB_GROUP))
    TYPE=InnoDB;

    好吧! 查看该字段,发现确实是旧的类,被不是新的类。

    那么为什么在测试环境中发现呢?

    进入测试库,也没有发现旧的类,好吧。

    第四次:成功

    再次部署到生产上,还是报错:类找不到。

    确认问题处在数据库中,我对quartz的表一张张的查找,仍然找不到这个记录,那就从写入库开始入手,查了quartz的代码,发现job_detail表中有个字段job_data,它的类型是blob,会不会存在这里呢?

    确实,可以打开此blob查看,数据时放到这里了。

    这个小心一些,再次检查是否有别的blob字段存放旧的job类,发现在triggers表中也有个字段job_data,至此问题发现了。可怎么解决呢?blob类型的数据不能直接通过update来执行,毕竟要考虑到编码的因素,拿就釜底抽薪,直接将类重构为以前的类。

    从这次经历来看,旧项目果然是坑,我就直愣愣的掉进去了。

    结论:

    计算机是个理性的东西,故一切皆有可能,即便是最不可能的事情也要去一一确认。在查找问题时最好想清楚所有发生故障的可能,然后一一排除,直到找到最终的问题。

    对web开发来说,解决此类问题的一般思路如下:

    1,从全局的角度来看,应用程序,缓存,数据库是三大独立模块,这些部分都有可能发生异常,应该首先排查应用程序本身的异常(这个概率最大);其次是缓存(同步)模块排查;最后是数据库模块排查。

    2,全局确定好的前提下,细分上述的模块,将可能出现的问题一一列出。

    3,动手,验证想法。对一个好的开发者来说,动手只是验证的手段,思路才是最重要的。

     

    转载于:https://www.cnblogs.com/davidwang456/p/4272530.html

    更多相关内容
  • quartz报错

    2018-03-16 10:44:58
    因为最新的spring-context-support是支持quartz的,以为不需要再引入quartz的包,谁知道在配置文件中,找到JobDetail对应的注入名,进入jar包class源码,发现根本没有这个类,却没有报错,非常不解,于是将quartz的...
        今天配置job的时候报了如下错误,很显然是找不到JobDetai类,因为最新的spring-context-support是支持quartz的,以为不需要再引入quartz的包,谁知道在配置文件中,找到JobDetail对应的注入名,进入jar包class源码,发现根本没有这个类,却没有报错,非常不解,于是将quartz的jar包导入之后,就不报这个错了。
    展开全文
  • mysql转pg之后项目报错报错信息如下: 解决办法: 在配置文件quartz.properties配置org.quartz.jobStore.driverDelegateClass 以下是我处理完整过程: 1、由于项目封装,我们需要新建quartz.properties文件然后...

    mysql转pg之后项目报错,报错信息如下:

    Couldn't retrieve job: 不良的类型值 long :
    org.quartz.JobPersistenceException: Couldn't retrieve job: 不良的类型值 long :
    

    解决办法:
    在配置文件quartz.properties配置org.quartz.jobStore.driverDelegateClass

    org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
    

    以下是我处理完整过程:
    1、由于项目封装,我们需要新建quartz.properties文件然后覆盖原有文件
    将原有文件复制,并配置

    org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
    

    2、重新打包并重启
    然后启动项目发现并没有生效,最后找到原因,添加的代码编译之后没有生效,所以若添加没有生效,一定看编译后是否有这段信息,最后才发现,项目封装,若覆盖则需要在pom放开(看每个人项目不同,只要生效即可),
    在这里插入图片描述
    放开之后重新编译
    在这里插入图片描述
    编译生效,重启项目,不在报错,完成!!!

    展开全文
  • 异常 [2021-11-08 17:03:57] [ERROR] ErrorLogger: An error occured ...org.quartz.SchedulerException: Problem instantiating class 'HelloJob' [See nested exception: java.lang.IllegalAccessException: Class or

    异常

    [2021-11-08 17:03:57] [ERROR] ErrorLogger: An error occured instantiating job to be executed. job= 'DEFAULT.helloJob'
    org.quartz.SchedulerException: Problem instantiating class 'HelloJob' [See nested exception: java.lang.IllegalAccessException: Class org.quartz.simpl.SimpleJobFactory can not access a member of class HelloJob with modifiers ""]
    	at org.quartz.simpl.SimpleJobFactory.newJob(SimpleJobFactory.java:58)
    	at org.quartz.simpl.PropertySettingJobFactory.newJob(PropertySettingJobFactory.java:69)
    	at org.quartz.core.JobRunShell.initialize(JobRunShell.java:127)
    	at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:392)
    Caused by: java.lang.IllegalAccessException: Class org.quartz.simpl.SimpleJobFactory can not access a member of class HelloJob with modifiers ""
    	at sun.reflect.Reflection.ensureMemberAccess(Reflection.java:102)
    	at java.lang.Class.newInstance(Class.java:436)
    	at org.quartz.simpl.SimpleJobFactory.newJob(SimpleJobFactory.java:56)
    	... 3 more
    [2021-11-08 17:03:57] [INFO] RAMJobStore: All triggers of Job DEFAULT.helloJob set to ERROR state.
    

    错误代码

    public class Test05 {
        public static void main(String[] args) throws SchedulerException {
            // 创建一个JobDetail实例,并且与HelloJob任务绑定
            JobDetail jobDetail = JobBuilder.newJob(HelloJob.class).withIdentity("helloJob").build();
            // 创建一个Trigger触发器实例,并且定义该job立即执行,并且每2秒执行一次,一直执行
            SimpleTrigger trigger = TriggerBuilder.newTrigger()
                    .withIdentity("helloTrigger")
                    .startNow()
                    .withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(2).repeatForever())
                    .build();
            // 创建Schedule实例
            StdSchedulerFactory factory = new StdSchedulerFactory();
            Scheduler scheduler = factory.getScheduler();
            scheduler.start();
            scheduler.scheduleJob(jobDetail, trigger);
        }
    }
    
    /**
     * 创建任务
     */
    class HelloJob implements Job {
    
        @Override
        public void execute(JobExecutionContext jobExecutionContext) {
            // 打印当前的时间
            System.out.println("当前的时间是:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
            // 具体在定时任务中要执行的操作,比如打印一段话
            System.out.println("Hello Quartz.");
        }
    }
    

    原因

    其实提示信息Class SimpleJobFactory can not access a member of class HelloJob with modifiers ""说得很明白了,即HelloJob类的修饰符不正确。

    由于需要写两个类,出于方便的考虑,把两个类放在一个java文件中,而一个java文件中只允许有一个public修饰符修饰的类,所以我就去掉了HelloJob类的public修饰符。

    解决

    将两个类分别写到两个java文件中,都使用public修饰符来修饰类。

    正确代码

    Test05.java

    /**
     * 执行任务(或叫触发任务)
     */
    public class Test05 {
        public static void main(String[] args) throws SchedulerException {
            // 创建一个JobDetail实例,并且与HelloJob任务绑定
            JobDetail jobDetail = JobBuilder.newJob(HelloJob.class).withIdentity("helloJob").build();
            // 创建一个Trigger触发器实例,并且定义该job立即执行,并且每2秒执行一次,一直执行
            SimpleTrigger trigger = TriggerBuilder.newTrigger()
                    .withIdentity("helloTrigger")
                    .startNow()
                    .withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(2).repeatForever())
                    .build();
            // 创建Schedule实例
            StdSchedulerFactory factory = new StdSchedulerFactory();
            Scheduler scheduler = factory.getScheduler();
            scheduler.start();
            scheduler.scheduleJob(jobDetail, trigger);
        }
    }
    

    HelloJob.java

    /**
     * 创建任务
     */
    public class HelloJob implements Job {
    
        @Override
        public void execute(JobExecutionContext jobExecutionContext) {
            // 打印当前的时间
            System.out.println("当前的时间是:" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
            // 具体在定时任务中要执行的操作,比如打印一段话
            System.out.println("Hello Quartz.");
        }
    }
    
    展开全文
  • 1.Quartz简介 Quartz是一个功能丰富的开源作业调度库,它由java写成,可以集成在任何java应用程序中,包括javaSE和javaEE等。使用Quartz可以创建简单或复杂的执行计划,它支持数据库、集群、插件和邮件,并且支持...
  • 今天用spring整合quartz,启动的时候报错,java.lang.NoClassDefFoundError: org/springframework/transaction/TransactionException。 spring版本用的是4.3.7,quartz用的是2.2.3。(据说版本问题可能会报错,看到...
  • java.lang.ClassNotFoundException: org.quartz.jobs.FileScanListener http://forums.terracotta.org/forums/posts/list/8582.page
  • spring整合quartz报错

    2019-05-31 20:45:00
    今天spring整合quartz报错,最后一步步排查,发现是和redis依赖冲突,最后redis升级了一下,问题解决。 总结:发现问题,逐一排查,如果是整合问题,报类加载不到的错误,大概率是和其他组件依赖冲突,找到冲突源...
  • mysql有个配置属性:lower_case_table_names windows上安装mysql,默认是1, linux上安装mysql,默认是0,代表不忽略大小写 在my.cnf配置文件中[mysqld]标签的作用区域,增加lower_case_table_names=1的配置,然后...
  • 当将Mysql数据库换为Sql Server数据库时启动报错如下   nested exception is org.quartz.SchedulerConfigException: Failure occured during job recovery. [See nested exception: org.quartz.impl.jdbcj...
  • Quartz报错

    万次阅读 热门讨论 2017-11-28 16:21:57
    Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally.  NOT STARTED.  Currently in standby mode.  Number of jobs executed: 0  Using thread pool 'org.quartz.simpl.SimpleThreadPoo
  • spring-boot 整合quartz的时候,连接windows的mysql的时候好好的,然而用linux上的mysql的时候,启动就报了这个错: Failure obtaining db row lock: Table ‘test.QRTZ_LOCKS’ doesn’t exist 分析: 首先用...
  • 使用maven ,可以在 http://mvnrepository.com 中去查找 pom 配置如何写 <!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz --&...org.quartz-scheduler&lt...
  • 今天线上添加定时任务之后 定时任务查询页面报出如上... 1.org.quartz.jobStore.useProperties = true 这个属性的意思存储的JobDataMaps是否都为String类型 检查下参数 2.mysql导出blob类型导入问题,导出的blob的...
  • weblogic 整合quartz 报错

    2019-11-08 09:43:18
    [2019-11-06 04:05:26,331] Third's :ERROR org.springframework.scheduling.quartz.LocalDataSourceJobStore:3876 - ClusterManager: Error managing cluster: Failure identifying failed instances when checking...
  • quartz任务执行报错 Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory at org.quartz.impl.StdSchedulerFactory.<init>(StdSchedulerFactory.java:284) at init.Q...
  •   在springboot整合quartz时,启动一直报错,控制台日志提示说是某个Scheduler重复创建了,日志如下: Caused by: java.lang.IllegalStateException: Active Scheduler of name 'MyScheduler' already registered ...
  • Spring4.3.4 + quartz2.2.1配置到application.xml中 <properties> <spring.version>4.3.4.RELEASE</spring.version> </properties> <dependency> <groupId>org.qu.....
  • 配置 quartz 报错

    2018-07-05 10:08:28
    错误信息:nested exception is java.lang.NoSuchMethodError: org.quartz.JobDataMap.put(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;后来发现是quartz这个jar包的版本太低,改到2.2.1就解决了 &...
  • SpringMVC+quartz 报错

    2017-09-09 08:55:38
    报错信息: ```Caused by: org.quartz.JobPersistenceException: The job (DEFAULT.consultJobDetail) referenced by the trigger does not exist. at org.quartz.simpl.RAMJobStore.storeTrigger(RAMJobStore....
  • 运行环境 springboot2.1.1 quarz2.3.0 jdk8 war包运行在tomcat9 11:00:57.624 [http-nio-8082-exec-2] ERROR c.k.f.w.e.GlobalExceptionHandler - [handle...org.quartz.JobPersistenceException: Couldn't obta.
  • springboot+quartz报错:Table 'XXXX.QRTZ_TRIGGERS' doesn't exist
  • 一、mysql quartz 连接报错org.quartz.JobPersistenceException: Couldn't acquire next trigger: The last packet successfully received from the server was 332,448 milliseconds ago.The last packet sent ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,859
精华内容 2,743
关键字:

quartz报错