嘿所有,我使用RuleStudio(修改过的Eclipse)在IBM Websphere ILOG JRules 7.0中工作,并且在尝试实现TimerTask时遇到了问题。
我根据我所知道的不同规则创建了一个Techincal规则,并尝试添加一些等待5秒然后发送辅助消息的代码。我通过以下代码尝试了这个:
int interval = 5000; // 5 sec
java.util.Date timeToRun = new java.util.Date(System.currentTimeMillis() + interval);
java.util.Timer timer = new java.util.Timer();
timer.schedule(new java.util.TimerTask() {
public void run() {
// Message Sent Here
}
}, timeToRun);
但是,此代码无法编译。它指出的错误位于new java.util.TimerTask()
之后的开放式括号中,错误消息为at token "{"
。
但有些有趣的观察结果:
- 我尝试执行java.util.TimerTask test = new java.util.TimerTask();
并在new java.util.TimerTask();
处抛出错误Could not find a public constructor (or argument mismatch) for java.util.TimerTask.
我发现它是奇怪的,因为它是明确导入的。
- 如果重要的话,我在我的comp上安装了Java版本1.6.0_17。
谢谢!
答案 0 :(得分:0)
我没有ILOG的经验,但我猜这可能会更好:
java.util.Timer timer = new java.util.Timer();
class MyTask extends java.util.TimerTask {
public void run() {
// Message Sent Here
}
}
timer.schedule(new MyTask(), timeToRun);
如果仍然无效,请从方法中取出MyTask
。
答案 1 :(得分:0)
注意到这仍然是开放的,结果发现我们使用的引擎上有一个自定义的java库,它不包含TimerTask ... doh。使用了库实际拥有的线程睡眠命令。