3

为手机编写 j2me 应用程序时,System.out.println()如果使用模拟器,则使用控制台上的打印。但是,当代码部署在手机上时,控制台输出到哪里去了?

如果无法在未连接的手机中看到这一点,如果手机仍然连接到部署的 PC [通过 USB],有没有办法看到它?

4

8 回答 8

4

在 Symbian 手机(诺基亚、索尼爱立信、摩托罗拉、三星、松下、西门子,检查 Series60、Series80、Series90 或 UIQ 平台)上,您可以检索 System.out 和 System.err。最重要的是,您也可以检索 Throwable.printStackTrace()。

Symbian OS 的早期版本带有一个名为 Redirector 的本地工具。它最终也可供第三方 MIDlet 开发人员使用。现在可能很难找到它,但可以使用插入 Java 虚拟机使用的 C 标准库的 Symbian 实现的 C++ 代码重新开发。

较新版本的 Symbian OS 带有一个额外的 GCF 协议,它允许通过简单地使用检索 System.out、System.err 和 Throwable.printStackTrace()

javax.microedition.io.Connector.openDataInputStream("redirect://");

在从 Sun Ltd cldc-hi 虚拟机过渡到 IBM J9 虚拟机期间,您可能需要在某些版本的 Series60 上使用“redirect://test”。

在启动要记录其输出的 MIDlet 之前,需要打开连接,因此您需要在单独的 MIDlet 中打开它。

于 2009-09-30T17:47:01.610 回答
2

我在 j2me 日志记录中找到了这个问题的答案。如果没有其他方法,也许可以尝试一下。不过,一种简单的访问方式System.out.println()会很好。

于 2008-09-24T13:19:41.007 回答
2

感谢您对 QuickRecipesOnSymbian 的回复。

在以下文章中,您可以找到相应的 J2ME MIDlet 以在 Symbian 手机上显示标准错误/输出:

http://wiki.forum.nokia.com/index.php/How_to_get_System.out_output_from_a_MIDlet_and_save_it_to_a_file_in_S60_devices

该解决方案也适用于三星 i8910。(由于我是这个网站的新手,我不能发布多个链接,所以你需要在文章末尾找到包含源代码和 jar 的 zip。)

于 2010-08-25T00:17:51.710 回答
1

简单的答案是:你看不到它们。它确实在某处打印(因为如果您有大量打印件,大量手机会减慢速度)但是,在大多数手机上,无法访问它。

有些设备会显示控制台输出,例如 Sony Ericssons,如果系留并运行设备上的调试程序,它会显示所有内容。您可以通过搜索各种制造商的开发人员网站(如果存在)来找出哪些可以,哪些不可以。

最好的办法是编写一个附加到程序中的 StringBuffer 的小方法。然后映射一个按键,它将在屏幕上显示 StringBuffer 的内容。它对于搜索那些令人讨厌的设备问题非常宝贵。

于 2008-09-27T11:00:37.700 回答
0

您还应该确保不要在生产代码中包含 println。

我看到一些手机在执行此操作时实际上存在内存泄漏(例如 Sprint 上的 Sanyo 8400。

于 2008-10-05T04:04:22.920 回答
0

我能提供的唯一意见是,这在每个平台上都会有很大不同。我主要使用 BlackBerry 和 System.err 进入设备事件日志,但我不知道 System.out 去哪里。

于 2008-09-24T16:04:32.043 回答
0

例如,BlackBerry J2ME 设备可以连接到计算机,调试器可以连接到该设备。在实际设备上运行程序后,您的System.outOutputStream 将转到调试器控制台。

于 2009-04-30T15:25:10.397 回答
0

登录设备始终是 J2ME 的一个问题,因为它没有标准实现。我可以给你打电话给GEAR。它是一个 J2ME 图形框架,它还实现了一个“设备内”调试控制台,您可以在其中打印行并在屏幕上显示它们。

于 2009-01-13T17:27:44.230 回答