0

当我尝试以任何方式启动它时,Java ME 就会冻结。更具体地说,由 device-manager.exe 调用的 javaw.exe 似乎进入了无限循环,因为没有传递一个异常或错误消息。托盘中的图标出现,但它的菜单,而不是设备列表,只显示一个条目:退出,顺便说一句不起作用。我只能通过任务管理器关闭它。而且由于模拟器需要设备管理器,我根本无法使用它。
我尝试了 Java ME SDK 的 3.0、3.2、3.3 版本,每个版本都存在这个问题。操作系统:Windows 7。JDK:7u25。

我已经尝试了我在互联网上找到的每一个建议,但仍然无法让它发挥作用。设备管理器日志显示问题从调用“rmiRegistryPortFile”开始。

[2013-07-02 19:20:53.070]  DEBUG - strap.BasicObjectConfiguration - Calling create on rmiRegistryPortFile 

这始终是日志中的最后一个条目。

只有一种方法我设法让它工作 - 通过在 Windows Virtual PC 下安装和运行它。奇怪的是,在 VM 下,它在同一个操作系统(新安装的 Windows 7)中运行良好。但不幸的是,这并没有真正说明错误的原因,这不是一个解决方案:(我必须以某种方式让它在没有 VM 的情况下工作。

我尝试重新安装 Windows,但没有帮助。查看 Process Monitor 中的 javaw I/O 并将其与工作中的 I/O 进行比较。看起来其中一个应用程序线程在读取文件“rt.jar”后突然关闭(我猜是在加载“rmiRegistryPortFile”时?),而工作的javaw在此之后立即写入日志文件。Windows 日志对此一无所知:当时没有权限问题、错误或警告。尝试使用 rmiregistry.exe 将 PATH 变量修改为目录,但没有帮助。网络套接字可用。更改了 DEP 设置,相同。

有人可以帮忙吗?我已经在这个错误上花了几天时间。

4

3 回答 3

0

这绝对是权限问题。尝试查看与 Java 相关的任何文件夹是否为“只读”。

于 2013-07-03T08:39:24.983 回答
0

如果您在尝试通过 JavaME SDK 3.0 的内置模拟器运行 midlet 时收到此错误消息,请尝试为 runMidlet.exe 禁用 DEP。数据执行保护 (DEP) 配置可在 Windows 的以下位置找到:控制面板 > 系统安全 > 系统 > 高级系统设置 > 高级选项卡 > 性能 > 数据执行保护。

将此文件添加到 DEP 排除列表:

<javame-install-dir>\runtimes\cldc-hi-javafx\bin\runMidlet.exe

如果现在一切正常,请向 Sun(现在的 Oracle)大声抱怨他们需要制作没有缓冲区溢出的软件。

我个人提交了一份针对 JavaME SDK 3.0 的错误报告。您也应该这样做,或者在您也遇到此问题的同一份错误报告中发出您的声音。

  1. 新安装的 Windows 没有 msvcrtXX.dlls

    转到文件夹runtimes\\cdc-hi\\bin并复制Microsoft.VC80.CRTruntimes\\cldc-hi-javafx\\bin. 此问题将很快通过自动更新修复。

  2. 本地主机问题

    请编辑<javamesdk_installdir>\\toolkit-lib\\modules\\bootstrap\\conf\\system.properties并更改 device-manager.object-registry.host=localhost 为: device-manager.object-registry.host=127.0.0.1

  3. 1299 端口可能被占用

    请编辑<javamesdk_installdir>\\toolkit-lib\\modules\\bootstrap\\conf\\system.properties并更改 device-manager.object-registry.port=1299 为: device-manager.object-registry.port=1999

  4. XP 64 位

    请使用 32 位版本的 JDK。

  5. 防火墙

    确保防火墙没有阻止 3 中给出的端口上的通信。默认端口号对于 windows 为 1299,对于 Mac 为 1999。

于 2014-05-29T17:13:33.067 回答
0

我尝试了上述所有这些步骤都无济于事,直到在阅读此线程https://community.oracle.com/thread/4009110后,我用 jdk-8u112(必须是 32 位)替换了我的 JDK jdk-8u117 。在更改 Java 版本后,我不得不重新启动我的机器,因为它在安装后没有立即检测到。我正在使用 Netbeans 7.4。

于 2020-02-07T10:19:11.603 回答