【问题标题】:Issues with TimerTaskTimerTask 的问题
【发布时间】:2011-04-18 19:30:32
【问题描述】:

大家好,我正在使用 RuleStudio(修改后的 Eclipse)在 IBM Websphere ILOG JRules 7.0 中工作,但在尝试实现 TimerTask 时遇到了问题。

我根据我知道有效的不同规则创建了一个技术规则,并尝试添加一些等待 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.,我觉得这很奇怪,因为它肯定是进口的。

-如果重要的话,我的计算机上安装了 Java 版本 1.6.0_17。

谢谢!

【问题讨论】:

  • 奇怪。如果对您有任何帮助,我已经编译了此代码而没有问题。您可以尝试通过手动调用javac 从控制台编译相同的代码吗?
  • 不知道它是否会让我,因为技术规则文件是 .trl,但我会试一试。
  • 我的意思是我在普通的 Oracle JDK 上编译了 sn-p,没有花哨的 .trl 东西 :)
  • @Victor 是的,它看起来与特定于 ILOG Jrules 的东西有关,该代码在普通 Java 环境中运行良好

标签: java websphere ilog jrules


【解决方案1】:

我没有使用 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

【讨论】:

  • 不起作用,在 TimerTask 之后的左括号上出现相同的at token "{" 错误......即使我直接导入它也不知道 TimerTask 是什么。
【解决方案2】:

注意到这仍然是打开的,原来我们使用的引擎上有一个自定义的 java 库,它不包括 TimerTask... doh。使用图书馆实际拥有的线程睡眠命令。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-18
    • 1970-01-01
    • 2020-04-26
    • 2023-03-16
    相关资源
    最近更新 更多