我有一个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
我用谷歌搜索了但我找不到任何答案 - 为什么这不起作用?干杯,蒂姆。
答案 0 :(得分:1)
你正在构建这样的计时器:
Timer myTimer = new Timer();
你的构造函数声明是:
public Timer(long aTimeout)
很明显,不是吗?您必须构建像new Timer(1234)
这样的计时器,或者向其添加无参数构造函数。
答案 1 :(得分:0)
您显示的代码甚至不应该编译,因为您调用了Timer()
默认构造函数,但是Timer
只有一个参数化构造函数:public Timer(long aTimeout)
。
因此,要么您没有向我们展示SSCCE,要么您对“效果良好”的定义与我们的明显不同; - )