遇到的问题笔记以及解决方案【长期更新】

  1. Caused by: java.lang.NoSuchMethodError: org.springframework.web.bind.annotation.RequestMapping.path()[Ljava/lang/String;
    解决方法:clean eclipse工程、重新新建Tomcat
  2. jar包冲突
    解决方法:此处只解释maven如何使用,本工程依赖leech-core,奈何leech-core依赖2.3.22-incubatin,只需要,再次引入你需要的版本即可。(在pom中查看依赖关系,ide、构建工具不一致,但是是思路一样)
<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.25-incubating</version>
    </dependency>
<dependency>
  <groupId>com.sf.leech</groupId>
      <artifactId>leech-core</artifactId>
      <version>2.0.1-SNAPSHOT</version>
      <exclusion>
        <groupId>org.freemarker</groupId>
        <artifactId>freemarker</artifactId>
        <version>2.3.22-incubating</version>
     </exclusion>
</dependency> 

3. Maven打包命令
A:mvn versions:set -DnewVersion=2.0.1-SNAPSHOT
(-SNAPSHOT表示版本覆盖,有重复版本无所谓,没有这个-SNAPSHOT版本相同会报错)
恢复原版本:mvn versions:revert
B:1.进入leech根目录执行:
  mvn clean source:jar package deploy -Dmaven.test.skip=true
  2.进入leech-maven-plugin目录执行:
  mvn clean source:jar package deploy -Dmaven.test.skip=true
或者关系,跳过test  
C:OK: mvn versions:commit;
  fail: mvn versions:revert;
4. ajax跨域问题
response.setHeader(“Access-Control-Allow-Origin”,”*”);
response.setHeader(“Access-Control-Allow-Headers”,”x-requested-with,ssi-token”);
response.setHeader(“Access-Control-Max-Age”,”3600”);
response.setHeader(“Access-Control-Allow-Methods”,”GET,POST,PUT,DELETE,OPTIONS”);
5. select in (select) 为NULL
SELECT *
FROM dbo.Table_A AS a
WHERE a.ID NOT IN ( SELECT b.ID
FROM dbo.Table_B AS b
WHERE b.ID IS NOT NULL ) –排除NULL值参较
运算符比较
5. quartz 加载 spring bean
xml配置

    <bean id="testSetJobDetailBean" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
        <property name="name" value="exampleJob" />
        <property name="jobClass" value="com.sf.web.quartz.TestSetQuartz" />
        <!-- 可以封装各种数据到JobExecutionContext里 -->
        <property name="jobDataAsMap">
            <map>
                <entry key="timeout" value="5"/>
            </map>
        </property>
    </bean>

    <bean id="testTaskTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
        <property name="jobDetail" ref="testSetJobDetailBean" />
        <property name="startDelay" value="10000"/>
        <property name="cronExpression" value="0 0/1 * * * ?" />
    </bean>

    <bean id="testSchedulerFactoryBean"
        class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
         <property name="schedulerContextAsMap">    
            <map>    
                <!-- spring 管理的service需要放到这里,才能够注入成功 -->    
                <description>schedulerContextAsMap</description>    
                <entry key="testSetRunningServiceImpl" value-ref="testSetRunningServiceImpl"/>  
                <entry key="emailHttpGeneratorImpl" value-ref="emailHttpGeneratorImpl"/>  
            </map>    
        </property> 
        <property name="applicationContextSchedulerContextKey">    
            <value>applicationContext</value>    
        </property>    
        <property name="triggers">
            <list>
                <ref bean="testTaskTrigger" />
            </list>
        </property>
    </bean>

我的java源码

public class TestSetQuartz extends QuartzJobBean {

    private static final int QUARTZ = 1;

    private static final int SCENE_TYPE = 1;

    private static Logger logger = LoggerFactory.getLogger(TestSetQuartz.class);

    private TestSetRunningService runService;

    private EmailHttpGenerator emailervice;

    @Override
    protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
        Date now = new Date();

        logger.info("[start quart time -- {}]", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(now));
        initService(context);
        List<Integer> testSetIdList = getTestSetIdList(now);
        for (Integer testSetId : testSetIdList) {
            task(testSetId);
        }
        logger.info("[end quart time -- {}]", new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
    }

    private void initService(JobExecutionContext context) {
        try {
            // 获取JobExecutionContext中的service对象
            SchedulerContext schCtx = context.getScheduler().getContext();
            // 获取Spring中的上下文
            ApplicationContext appCtx = (ApplicationContext) schCtx.get("applicationContext");
            runService = (TestSetRunningService) appCtx.getBean("testSetRunningServiceImpl");
            emailervice = (EmailHttpGenerator) appCtx.getBean("emailHttpGeneratorImpl");
        } catch (SchedulerException e1) {
            logger.error("TestSetQuartz init service error");
        }
    }

    private List<Integer> getTestSetIdList(Date now ) {
        List<Integer> testSetIdList = new ArrayList<Integer>();
        Map<Integer, Object> cache = CacheClass.getCacheMap();
        for (Entry<Integer, Object> entry : cache.entrySet()) {
            Date fuDate = (Date) entry.getValue();
            boolean lessThanSixtyS = (fuDate.getTime() - now.getTime())/1000 <60 && (fuDate.getTime() - now.getTime())/1000 >=0;
            if (lessThanSixtyS) {
                testSetIdList.add(entry.getKey());
            } 
        }
        return testSetIdList;

    }
    private void task(Integerid){
    //todo
    }
}   
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值