【问题标题】:Java ME SDK 3.2 (and 3.3, 3.0 as well) just won't startJava ME SDK 3.2(以及 3.3、3.0)无法启动
【发布时间】:2013-06-30 03:38:12
【问题描述】:

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

我已经尝试了我在 Internet 上找到的所有建议,但仍然无法正常工作。设备管理器日志显示问题从调用“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 设置,还是一样。

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

【问题讨论】:

  • 哇,你刚刚什么都做了,我想这与网络问题有关,尝试禁用防火墙并以管理员模式运行设备管理器
  • 做到了。不,不起作用。如果我尝试为 javaw.exe 打开管理员模式,它根本不会启动。
  • 我真的很抱歉,我真的很想知道,我在想的最后一种可能性是权限集,也许某些权限被拒绝了
  • 天哪,它开始了!我将 javaw.exe 设置为与 Windows XP 的兼容模式(更高版本不起作用),它开始时没有冻结。但仍然无法正常工作 - 模拟器窗口未显示,托盘图标菜单中的设备列表为空。但是几天后我们得到了某个地方:)你是对的,这一定是一些权限问题。感谢您的回复。

标签: java mobile emulation


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    如果您在尝试通过 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.CRT 复制到runtimes\\cldc-hi-javafx\\bin。此问题将很快通过自动更新得到修复。

    2. 本地主机问题

      请编辑&lt;javamesdk_installdir&gt;\\toolkit-lib\\modules\\bootstrap\\conf\\system.properties 并更改 device-manager.object-registry.host=localhost 转:device-manager.object-registry.host=127.0.0.1

    3. 1299 端口可能被占用

      请编辑&lt;javamesdk_installdir&gt;\\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。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 感谢您的建议。完全取消了 JDK、ME SDK 和 C:\Users 中所有临时文件夹的只读标志。但是不,一旦我关闭兼容模式,设备管理器就会再次发疯。嗯,不管怎样,问题基本解决了。从昨天开始重新启动 PC 后,模拟器开始正常工作(即使托盘菜单仍然是空的)。 NetBeans 成功识别 ME 平台,编译运行代码。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-14
      • 1970-01-01
      相关资源
      最近更新 更多