下面这个程序编译未出错,但运行后就出现异常信息:"Exception in thread "main" java.lang.NoClassDefFoundError: c:\java\UseWaitNotify",我的java是1.6版本,环境变量设置也包含了tools.jar和dt.jar这两个包,请问问题倒底出在哪里????????
import java.io.*;public class UseWaitNotify{
public static void main(String[] args){
MsgSender s = new MsgSender();
Thread t1 = new Thread(s);
MsgReceiver r = new MsgReceiver(s);
Thread t2 = new Thread(r);
t2.setDaemon(true);
t1.start();
t2.start();
try{
t1.join();
while(s.flag){
Thread.sleep(100);
}
}
catch(InterruptedException e){
System.out.println(e.toString());
}
try{
int ch = System.in.read();
}catch(IOException e){}
}
}class MsgSender implements Runnable{
char data;
boolean flag;
public void run(){
synchronized(this){
while(flag){
try{
this.wait();
}
catch(InterruptedException e){
e.printStackTrace();
}
}
data = 'A';
System.out.println("发送的数据是:"+data);
synchronized(this){
flag = true;
this.notify();
}
}
}
}class MsgReceiver implements Runnable{
MsgSender sender;
public MsgReceiver(MsgSender sender){
this.sender = sender;
}
public void run(){
while(true){
synchronized(sender){
while(!sender.flag){
try{
sender.wait();
}
catch(InterruptedException e){
System.out.println(e.toString());
}
}
}
System.out.println("接收的数据是:"+sender.data);
synchronized(sender){
sender.flag = false;
sender.notify();
}
}
}
}
import java.io.*;public class UseWaitNotify{
public static void main(String[] args){
MsgSender s = new MsgSender();
Thread t1 = new Thread(s);
MsgReceiver r = new MsgReceiver(s);
Thread t2 = new Thread(r);
t2.setDaemon(true);
t1.start();
t2.start();
try{
t1.join();
while(s.flag){
Thread.sleep(100);
}
}
catch(InterruptedException e){
System.out.println(e.toString());
}
try{
int ch = System.in.read();
}catch(IOException e){}
}
}class MsgSender implements Runnable{
char data;
boolean flag;
public void run(){
synchronized(this){
while(flag){
try{
this.wait();
}
catch(InterruptedException e){
e.printStackTrace();
}
}
data = 'A';
System.out.println("发送的数据是:"+data);
synchronized(this){
flag = true;
this.notify();
}
}
}
}class MsgReceiver implements Runnable{
MsgSender sender;
public MsgReceiver(MsgSender sender){
this.sender = sender;
}
public void run(){
while(true){
synchronized(sender){
while(!sender.flag){
try{
sender.wait();
}
catch(InterruptedException e){
System.out.println(e.toString());
}
}
}
System.out.println("接收的数据是:"+sender.data);
synchronized(sender){
sender.flag = false;
sender.notify();
}
}
}
}
我试了,没用!
Exception in thread "main" java.lang.NoClassDefFoundError
1,可能是由于你的java文件不是UseWaitNotify.java
2,可能就是你环境变量的问题----------------------------------
javac UseWaitNotify.java
java UseWaitNotify
发送的数据是:A
接受的数据是:A
JAVA_HOME C:\Program Files\Java\jdk1.6.0_03
CLASSPATH .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar
PATH 中在添加;%JAVA_HOME%\jre\bin就可以了,
你也可以从网上随便找一下环境配置