//-----------------------------代码--------------------------------------
class Demo extends Thread
{
public void run()
{
for(int x=0; x<60; x++)
System.out.println("demo run!----"+x);
//System.out.println("Demo Run!");
}
}
class ThreadDemo1
{
public static void main(String[] args)
{
Demo d = new Demo();
d.start();
for(int x=0; x<60; x++)
System.out.println("main run!----"+x);
}
}
看着眼熟吧?
这是我看了毕向东老师的视频后,写出来的一段小程序,用于创建一个线程。
类的说明:Demo类继承Thread类,并复写Thread类中的run方法。
主函数动作:创建Demo对象d,并调用d.start();,开启线程。
然后:
//------------------------------------------------运行结果----------------------------------------------
ThreadDemo1.java:16: 错误: 找不到符号
d.start();
^
符号: 方法 start()
位置: 类型为Demo的变量 d
1 个错误
//----------------------------问题的解决-----------------------------
仔细瞅了老半天,愣是没揪出问题,让人不爽之极。
甚至到后来,我竟然丧心病狂地去翻看Thread类的源代码,企图找出JDK1.7.0在Thread类中没有定义start方法的证据。
经过一番功夫,最终郁闷地发现:在其他的路径此程序均能正常运行。在当前路径却死活不肯通过编译。
不知怎的,忽然灵机一动,我把这个特殊的目录里所有类文件删除,重新编译。------问题解决。
//-------------------问题的原因?---------------------------------------
现在看来,问题的出处应该是那几个被我删掉的类文件(Demo.class, Thread.class, 至于ThreadDemo1.class大概没有吧??)
现在真正的问题来了:哪怕原来的类文件有问题,我们用javac命令把正常代码编译一遍,应该是能把有问题的.class文件覆盖掉吧。
现在却需要手动删除错误的类文件。
所以问题出现的真正原因到底是什么呢?
|