J2ME 模拟器似乎没有在 Eclipse 中打开

Posted

技术标签:

【中文标题】J2ME 模拟器似乎没有在 Eclipse 中打开【英文标题】:J2ME emulator does not appear to open in Eclipse 【发布时间】:2011-12-29 21:38:40 【问题描述】:

我目前已安装 Java ME SDK 3.0.5,并且正在从 Eclipse 运行 MIDLET。

当我在模拟器设备下运行应用程序时,我会在控制台中获得以下数据:

Syntax:

emulator [arguments]

In order to get commands supported by given device run:
emulator.exe -Xdevice:<device name> -Xquery

Generic list of arguments is:

-version           Display version information about the emulator
-help              Display list of valid arguments
-classpath, -cp    The class path for the VM
-D<name>=<value>   Set a system property
-Xdebug            Use a remote debugger
-Xrunjdwp:[transport=<transport>,address=<address>,server=<y/n>,
       suspend=<y/n>]
                   Debugging options
-Xdevice:<device>  Select a device skin for the emulator
-Xdomain:<domain_name>
               Set the MIDlet suite's security domain
-Xmain:<main class name>
                   Run the main method of a Java class, as in Java SE
-Xquery            Print device information

一切似乎都很好,但我无法让任何形式的仿真出现。

这是我的 MIDLET 的代码,虽然我不认为问题出在这里。

 import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.microedition.lcdui.*;

public class Hello extends MIDlet implements CommandListener 

private Command exitCommand;
private Display display;
private Form screen;

public Hello() 
display = Display.getDisplay(this);

exitCommand = new Command ("Exit", Command.EXIT, 2);

screen = new Form ("Hello World");

StringItem strItem = new StringItem ("","Hello World");
screen.append (strItem);

screen.addCommand (exitCommand);
screen.setCommandListener(this);


public void startApp() throws MIDletStateChangeException 
    // set the current display to the screen
    display.setCurrent(screen);



public void pauseApp() 
    // TODO Auto-generated method stub




public void destroyApp(boolean unconditional)  
    // TODO Auto-generated method stub




public void commandAction (Command c, Displayable s) 

    if (c == exitCommand) 
    
        destroyApp (false);
        notifyDestroyed();
    



【问题讨论】:

【参考方案1】:

输出很简单,它告诉你模拟器的命令行语法不正确。

转到 Java ME 设备设置并编辑模拟器命令行/启动选项以适应。

切换 IDE 作为短期解决方案可能对您有用,但找到问题的根源总是更好。此外,它将帮助您了解模拟器框架。

【讨论】:

【参考方案2】:

我切换到 Netbeans,它集成了对 J2ME 的支持(而不是必须为 Eclipse 安装第 3 方插件),现在它可以完美运行了。

【讨论】:

【参考方案3】:

我在 Eclipse 上运行基本的 JavaMe 应用程序时遇到了类似的问题,“损坏的 JAR,读取时出错”。在我跟随这个系列的初学者http://help.eclipse.org/galileo/index.jsp?topic=/org.eclipse.mtj.doc.user/html/gettingstarted/prepare_workbench.html 之后,它对我有用(尽量不要错过这里提到的任何内容)。 请注意,当您启动应用程序时,请使用“应用程序描述符”(-从左侧菜单)中的“作为模拟 Java ME JAD 启动”(-在页面右上角的“运行”部分)。

这是一个迟到的回复,但将来可能会对某人有所帮助。

【讨论】:

【参考方案4】:

如果您喜欢冒险并且想在没有 IDE 的情况下开发/运行 JavaME 应用程序,我有一线希望,请编写一个批处理脚本(或 linux 系统的 shell 脚本)以手动运行具有特定 jad 的模拟器

批处理脚本 (run.bat)

"<javame-3.0-sdk-root-folder>\bin\emulator.exe" 
                   -Xdescriptor:"<jad-filename-with-extension>" >> logs.txt
pause
exit

将上述脚本保存在与应用程序 jad/jar 相同的文件夹中。控制台打印将在log.txt 文件中提供。

【讨论】:

【参考方案5】:

这里是如何从模拟器运行 jar (Java ME SDK 3.0.5)

(如何在 Java ME SDK 3.0.5 中运行 MIDLET ::http://madhukaudantha.blogspot.com/2012/10/how-to-run-midlet-in-java-me-sdk-305.html

【讨论】:

以上是关于J2ME 模拟器似乎没有在 Eclipse 中打开的主要内容,如果未能解决你的问题,请参考以下文章

如何从 NetBeans 直接在移动设备上运行 J2ME 应用程序?

J2ME:预取错误 -5。媒体异常

Eclipse - 导入 j2me 项目

J2ME RMS - 打开/关闭记录存储的最佳实践?

在eclipse中构建项目?

j2me 可以让图像稍后出现吗?