1

我正在尝试在 Solaris OS 上使用 Java 进行远程调试。以下是我尝试过的 -

我有一个名为 TestP 的 Java 类,它具有 main 方法。

当我尝试 java -classpath 。测试P

该程序运行良好。但是当我尝试将调试参数添加到 JVM-

java -Xdebug -Xrunjdwp:transport=dt_socket,address=8001,server=y,suspend=n -classpath 。测试P

它没有给出这个错误-

UTF 错误 ["../../../src/solaris/npt/utf_md.c":49]: 未能完成 iconv_open() 设置

谁能帮我弄清楚为什么会出现这个错误?以上在我的 Linux 机器上运行良好。

Solaris 上的 Java 版本:Java(TM) SE Runtime Environment (build 1.6.0_15-b03) Java HotSpot(TM) Client VM(build 14.1-b02,混合模式)

Linux 上的 Java 版本:java 版本 "1.6.0_0" OpenJDK Runtime Environment (IcedTea6 1.5) (fedora-20.b16.fc10-i386) OpenJDK Server VM(build 14.0-b15,混合模式)

4

3 回答 3

2

嗯...这似乎是 Java 6 的已知 Solaris(不是特定于 Solaris 10)问题,而不是 Java 问题(请参阅此线程)。

有人成功地应用了来自 Sun 的人 Jeff Moguillansky 的解决方法(请参阅此博客文章),但我不建议这样做,而是考虑在 Sun 的论坛上搜索 sunsolve 以获取补丁。

看看这个:http ://sunsolve.sun.com/search/document.do?assetkey=1-1-6586755-1 (您需要一个具有有效支持合同或软件订阅的 Sun 在线帐户)。

于 2009-11-13T14:32:31.460 回答
2

使用 truss 我发现该进程正在寻找 /usr/lib/iconv/geniconvtbl/binarytables/UTF-8%646.bt 和 646%UTF-8.bt,所以我只是将 ISO8859-1%ISO646.bt 复制到UTF-8%646.bt 和 ISO646%ISO8859-1.bt 到 646%UTF-8.bt(是的,它是“646”,而不是“ISO646”!)

这当然是一个非常丑陋的解决方法,我不知道它是否对 JVM 有任何负面影响,但至少它会启动 JVM 而不会中止。(我在 OpenSolaris 2009.06 上做了这个,顺便说一句)

于 2011-10-11T11:24:57.363 回答
0

如果 Pascal Thivent 是正确的,那么您可能想尝试运行 OpenSolaris(在空白机器上或在 vm 中)并查看问题是否也存在。如果没有,那么如果可能,请考虑现在使用该版本。

于 2009-11-13T18:37:34.040 回答