1

我有一个 Timer 类和一个 Test 类来测试这个计时器:

package tools;

public class Timer extends Thread 
{
    public boolean isRunning = true;
    private long timeout = 0;

    public Timer(long aTimeout)
    {
        timeout = aTimeout;
    }

    // Run the Thread
    public void run()
    {
        int i = 1000;
        while(i <= timeout)
        {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            i = i + 1000;
        }
        isRunning = false;
    }
}

和测试类:

public class Test 
{
    public static void main(String[] args) 
    {
        Timer myTimer = new Timer(10000);
        myTimer.start();

        while(myTimer.isRunning)
        {
            System.out.println("Running");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
}

在 Eclipse 中,这很好用。当我将它包含到 Solaris 服务器上的另一个项目中时,我得到以下异常:

Exception in thread "main" java.lang.NoSuchMethodError: tools.Timer.<init>(J)V 

我用谷歌搜索了它,但找不到任何答案 - 为什么这不起作用?干杯,蒂姆。

4

2 回答 2

1

您正在构建这样的计时器:

Timer myTimer = new Timer();

你的构造函数声明是:

public Timer(long aTimeout)

很明显,不是吗?您必须像 一样构造计时器new Timer(1234),或者向其添加无参数构造函数。

于 2012-06-06T14:32:12.860 回答
0

您显示的代码甚至不应该编译,因为您正在调用Timer()默认构造函数,但是Timer只有一个参数化构造函数:public Timer(long aTimeout).

因此,要么您没有向我们展示SSCCE,要么您对“运作良好”的定义与我们的大不相同;-)

于 2012-06-06T14:32:27.283 回答