麻烦给quartzPlugin 的例子

peterxin 发布于 2013/04/23 23:36
阅读 1K+
收藏 0

@绝望的八皮 你好,想跟你请教个问题: 麻烦能否给个quarzPlugin的例子

加载中
0
p
peterxin

执行该用例时

QuartzPlugin quartzPlugin = new QuartzPlugin("quartzjob.properties");
    		
   quartzPlugin.start();

报错信息为:

java.lang.NullPointerException

@绝望的八皮 帮忙看看

p
peterxin
quartzJob.properties的用绝对位置,相对位置都试过了。
0
绝望的八皮
绝望的八皮

你确定你的WEN-INF/classes下面有那个文件?我目测你没有吧 resource包作为源文件夹


另外最好是把异常堆栈贴出来。写程序10个异常9个就是NullPointerException..

0
p
peterxin

我是单独建立一个java project,把.properties放在项目根目录下。用junit4 debug时发现报错信息如下:

java.lang.NullPointerException
 at java.util.Properties$LineReader.readLine(Unknown Source)
 at java.util.Properties.load0(Unknown Source)
 at java.util.Properties.load(Unknown Source)
 at com.jfinal.ext.plugin.quartz.QuartzPlugin.loadProperties(QuartzPlugin.java:98)
 at com.jfinal.ext.plugin.quartz.QuartzPlugin.start(QuartzPlugin.java:48)
 at com.jfinal.ext.plugin.quartz.TestQuartz.test(TestQuartz.java:17)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
 at java.lang.reflect.Method.invoke(Unknown Source)
 at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
 at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
 at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
 at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
 at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
 at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
 at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
 at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
 at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
 at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
 at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
 at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
 at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
 at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50)
 at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
 at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
 

 

绝望的八皮
绝望的八皮
整个工程发我邮箱zhouleib1412@gmail.com
p
peterxin
@绝望的八皮 兄帮忙诊断一下。多谢
0
p
peterxin

@绝望的八皮 兄,我编写如下的代码,

public class TestQuartz {

	@Test
    public void test() throws InterruptedException {
/*		
		Properties p = new Properties();
		
		try {
			FileInputStream fis = new FileInputStream(new File("job.properties"));
			p.load(fis);
		}
		catch(FileNotFoundException fe){
			fe.printStackTrace();
		}
		catch(IOException ie) {
			ie.printStackTrace();
		}
*/
		
		QuartzPlugin quartzPlugin = new QuartzPlugin("job.properties");
		quartzPlugin.start();

    	
        TimeUnit.SECONDS.sleep(20);
        assertEquals(4, JobA.callTime);
        assertEquals(0, JobB.callTime);
    }

}

 注释掉的部分在执行时没有报错,不知道是否quartzPlugin对该文件的读取是否存在问题。

另外,想请教 @绝望的八皮 兄,在jfinal的web项目中如何来启停quartzPlugin的jobs,希望给写建议

0
p
peterxin

@绝望的八皮 兄,貌似问题出现在:

InputStream is = QuartzPlugin.class.getClassLoader().getResourceAsStream(config);
执行后is 为null


0
p
peterxin
搞定了。发现是该死的classpath问题,job.properties文件位置放置错误。不过还是要感谢@绝望的八皮 兄提供了优秀的jfinal-ext
绝望的八皮
绝望的八皮
回复 @peterxin : 在jfinal的Config的plugins里面add(new QuartzPlugin())
p
peterxin
@绝望的八皮 兄,jobs在web.xml配置中启动么,有例子供参考么
绝望的八皮
绝望的八皮
不好意思才回家看帖子,最近忙事情没太多时间来关注社区的问题,我前面已经说了看你的WEB-INF/classes下面是不是有那个配置文件。。。放错位置了肯定就在那个文件夹下找不到。实际加载路径是那里。 new File(“”)这个是相对路径
返回顶部
顶部