日期:2014-05-20  浏览次数:20642 次

运行j2me程序提示启动时出现内部错误
安装上j2me之后,运行j2me程序提示在“启动”期间发生了内部错误。Prefix string too short\
Unhandled event loop Exception 等错误信息
源代码:
import java.io.*;

import javax.microedition.io.*;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.*;
import javax.microedition.media.*;

public class AudioMIDlet
  extends MIDlet
  implements CommandListener, Runnable {
private Display mDisplay;
private List mMainScreen;
public void startApp() {
  mDisplay = Display.getDisplay(this);
  if (mMainScreen == null) {
  mMainScreen = new List("AudioMIDlet", List.IMPLICIT);
  mMainScreen.append("Via HTTP", null);
  mMainScreen.append("From resource", null);
  mMainScreen.addCommand(new Command("Exit", Command.EXIT, 0));
  mMainScreen.addCommand(new Command("Play", Command.SCREEN, 0));
  mMainScreen.setCommandListener(this);
  }

  mDisplay.setCurrent(mMainScreen);
}

public void pauseApp() {}

public void destroyApp(boolean unconditional) {}
public void commandAction(Command c, Displayable s) {
  if (c.getCommandType() == Command.EXIT) notifyDestroyed();
  else {
  Form waitForm = new Form("Loading...");
  mDisplay.setCurrent(waitForm);
  Thread t = new Thread(this);
  t.start();
  }
}

public void run() {
  String selection = mMainScreen.getString(
  mMainScreen.getSelectedIndex());
  boolean viaHttp = selection.equals("Via HTTP");

  if (viaHttp)
  playViaHttp();
  else
  playFromResource();
}
private void playViaHttp() {
  try {
  String url = getAppProperty("AudioMIDlet-URL");
  Player player = Manager.createPlayer(url);
  player.start();
  }
  catch (Exception e) {
  showException(e);
  return;
  }
  mDisplay.setCurrent(mMainScreen);
}
private void playFromResource() {
  try {
  InputStream in = getClass().getResourceAsStream("/relax.wav");
  Player player = Manager.createPlayer(in, "audio/x-wav");
  player.start();
  }
  catch (Exception e) {
  showException(e);
  return;
  }
  mDisplay.setCurrent(mMainScreen);
}
private void showException(Exception e) {
  Alert a = new Alert("Exception", e.toString(), null, null);
  a.setTimeout(Alert.FOREVER);
  mDisplay.setCurrent(a, mMainScreen);
}

这是怎么回事,是不是j2me 没有安装好,该怎么正确安装?需要什么辅助软件?
请各位高手指点
Thank you!!!


------解决方案--------------------
应该是项目名的名字太短了,我以前也遇到过too short的问题,就是项目名字符太少,好像要至少3个还是4个字符才行。