我周日写的程序,当时运行是没有问题的。今天运行奇了怪出问题。我看了代码没有问题就是出异常。代码如下
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;



public class TestExit extends MIDlet implements CommandListener
{
private Display display;
private Form form;
private final static Command cmd_exit=new Command("EXit",Command.EXIT,1);


public TestExit()
{
display=Display.getDisplay(this);
form=new Form("Exit");
}


protected void destroyApp(boolean arg0) throws MIDletStateChangeException
{

}


protected void pauseApp()
{

}


protected void startApp() throws MIDletStateChangeException
{
form.addCommand(cmd_exit);
form.setCommandListener(this);
display.setCurrent(form);

}


public void commandAction(Command c, Displayable d)
{

if(c==cmd_exit)
{
System.out.println("in");

try
{
destroyApp(false);
notifyAll();

} catch (MIDletStateChangeException e)
{
e.printStackTrace();
}
}
}

}
出的错误如下:
java.lang.IllegalMonitorStateException
at TestExit.commandAction(+24)
at javax.microedition.lcdui.Display$DisplayAccessor.commandAction(+280)
at javax.microedition.lcdui.Display$DisplayManagerImpl.commandAction(+10)
at com.sun.midp.lcdui.DefaultEventHandler.commandEvent(+68)
at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.run(+258)
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.Form;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;


public class TestExit extends MIDlet implements CommandListener
{
private Display display;
private Form form;
private final static Command cmd_exit=new Command("EXit",Command.EXIT,1);

public TestExit()
{
display=Display.getDisplay(this);
form=new Form("Exit");
}

protected void destroyApp(boolean arg0) throws MIDletStateChangeException
{
}

protected void pauseApp()
{
}

protected void startApp() throws MIDletStateChangeException
{
form.addCommand(cmd_exit);
form.setCommandListener(this);
display.setCurrent(form);
}

public void commandAction(Command c, Displayable d)
{
if(c==cmd_exit)
{
System.out.println("in");
try
{
destroyApp(false);
notifyAll();
} catch (MIDletStateChangeException e)
{
e.printStackTrace();
}
}
}
}
java.lang.IllegalMonitorStateException
at TestExit.commandAction(+24)
at javax.microedition.lcdui.Display$DisplayAccessor.commandAction(+280)
at javax.microedition.lcdui.Display$DisplayManagerImpl.commandAction(+10)
at com.sun.midp.lcdui.DefaultEventHandler.commandEvent(+68)
at com.sun.midp.lcdui.DefaultEventHandler$QueuedEventHandler.run(+258)
本文介绍了一个Java MIDP程序在周日正常运行但在之后出现IllegalMonitorStateException异常的情况。作者分享了完整的代码示例及遇到的具体错误信息,旨在探讨可能的问题原因及解决方案。

被折叠的 条评论
为什么被折叠?



