|
发行版说明
|
|
概述
Java 虚拟机
字体属性
Solaris 上的 Xserver 错误
RMI
CORBA、RMI-IIOP 和 Java IDL
Java 2DTM 技术
拖放
可访问性
AWT 和 Swing
JDBC
安全
联网
JavaTM Plug-in 组件
本地化注意事项
文档
工具无法转换 Solaris 2.6 上的日文 PCK 字符串
繁体中文文本问题
支持 Windows 2000
Windows NT 上安装
Java 2 SDK Standard Edition 版本 1.3.1 (J2SDK 1.3.1) 是一个维护版本,含有以前版本中已知错误的修复。有关这些修复的详细信息,请参见此版本中修复的错误此外,J2SDK 1.3.1 还包含下列增强功能。
有关 Java Plug-in 产品的文档,请参见 Java Plug-in 站点。
- Java
TM Plug-in 增强
本发行版包含增强的 Java Plug-in 产品,该产品配备了许多新功能,使其更具灵活性、更易于使用和配置, 并可让其支持 Netscape 6 浏览器的新的开放式 JVM 界面功能。如需详细信息,请参见 New Java Plug-in Features。这 些 Java Plug-in 增强功能首先是在更新版 J2SDK 1.3.0_01 中引入。
- Java 虚拟机中的错误处理功能
J2SDK 1.3.1 中的 Java 虚拟机具有新的错误处理机制, 它会当本机代码发生崩溃时,在屏幕上打印调试信息。如需详细信息,请参见 Error Handling in J2SDK 1.3.1。
- HTML Converter 现在为 Java 2 SDK 的一部分
现在 Html Converter 已绑定为 Java 2 SDK 的一部分。 在以前的发行版中(包括 J2SDK 1.3.1 Beta),只能单独下载 Html Converter。完整的 J2SDK 1.3.1 文档集可以下载。另请参见新的联机文档 Tuning Garbage Collection with the 1.3.1 Java Virtual Machine。
J2SDK 1.3.1 的用户可能会对以下的说明有兴趣,包括重要错误修复的说明、已知的错误和解决方法,以及有关使用本发行版的其他各项提示和建议。
下列说明是有关 Java 虚拟机的。
- 在 Linux 平台上,如果涉及 I/O 操作的文件已关闭,则 I/O 操作中等候的线程将不会唤醒。 这个问题被列为错误 4344135。为了避免这个问题,请将 J2SE_PREEMPTCLOSE 环境变量设置为 1。
J2SE_PREEMPTCLOSE=1 export J2SE_PREEMPTCLOSE
- 错误 4323062:当用户注销时,任何内嵌 Java VM 的 Windows NT Service 都会异常中止
在 J2SDK 1.3.1 中已修复这个错误。为能启用修正版,-Xrs 命令行选项务必发送到 JVM。附加的命令行参数是必要的, 因为修复必然会禁用 J2SDK 1.3 关机跟踪点机制和禁止使用 sun.misc.Signal 类。有关进一步的背景信息, 请至少参见 Bug Parade 上的最后评估段落:
http://developer.java.sun.com/developer/bugParade/bugs/4323062.html
- JNI 错误可使 JVM 在程序完成之后崩溃,错误消息如下所述。
此问题大多出现在 Linux Red Hat 7.1 SMP,尽管理论上 Microsoft Windows 和 Solaris 平台也会发生这种问题。Another exception has been detected while we were handling last error. Dumping information about last error: ERROR REPORT FILE = (N/A) PC = 0x0x41621c7a SIGNAL = 11 FUNCTION NAME = (N/A) LIBRARY NAME = (N/A) Please check ERROR REPORT FILE for further information, if there is any. Good bye.解决方案 - 在应用程序的主方法的末尾添加一个明确的退出调用:Runtime.getRuntime().exit(0)
- 在 Red Hat 7.1 上,自动安装的 NFS 的 Java 平台上运行代码会导致 Red Hat 上 dlopen() 中的频繁崩溃。此问题明显是由于 NFS 自动安装器造成的,如果您明确是用 mount -t nfs 安装,该问题将不存在。
本发行版有下列有关字体属性的问题。
- 在使用 6.1 版以外的 RedHat Linux 版本时,font.properties 文件可能不能在一些 AWT 组件上正确显示某些 Symbol/Dingbats 字符。若要更正这个问题,请使用这个经修订 的 font.properties 文件来替 换 <JAVA_HOME>/jre/lib/ 上的文件。
- 由于错误 4419794,字体属性可发出对 Solaris 8 上的 UTF-8 语言环境的警告消息(Intel 体系结构)。如果您必须在 Intel 硬件的 Solaris 8 上使用 UTF-8 语言环境,请将您的系统更新为 Solaris 8 Update Release 4,即可解决此问题。
在用 Java 编程语言编写的应用程序引用字体时,Solaris Xserver 错误会引起系统崩溃。 这个问题在错误报告 4391019 中说明。以下 针对 Xserver 的 Solaris 修补程序将在 2001 年 6 月中旬推出,它们会有助于减少这种问题的出现。对于 Solaris 2.6: 105633-55 (Sparc) 106248-41 (Intel)
对于 Solaris 7: 108376-24 (Sparc) 108377-22 (Intel)
对于 Solaris 8: 108652-31 (Sparc) 108653-26 (Intel)查看 SunSolve 网站中是否有这些修补程序。
以下为本发行版中对 RMI(远程方法调用)功能的重要更改。
- 用于接收远程调用的
"accept"java.net.SocketPermission要求
由于以前 J2SDK 实施中的错误,即使该访问控制上下文没有远 程java.net.InetAddress的"accept"java.netSocketPermission和 Socket 连接端口,您仍旧可以在给定的访问控制上下文中导出远程对象,然后通过该 Socket 连接端口接收对该对象的远程调用。这个错误已经过修复;因此,在某些情况下,可能必须对导出远程对象的代码授予比原先实施更多的许可权,以便能正常运作。
在如何使用缺省的安全策略文件语法授予此类许可权方面,举例而言,可以下列许可权项(在适当源代码的授予项目中)表示从
terrier.east.sun.com主机接受 Socket 连接的许可权:permission java.net.SocketPermission "terrier.east.sun.com", "accept";如java.netSocketPermission的文档中所述,主机规范的起始部分可能是通配符 "*";因此,可以通过给定授予项中的下列许可权项来表示接受任何主机 Socket 连接的许可权:permission java.net.SocketPermission "*", "accept";
- 未导出的远程对象不能收集垃圾
在以前的实施中,在某些情况下,RMI Runtime 会强力参考远程对象,即使它很明确地未导出,情形也是一样。这个错误已经过修复,因此 RMI Runtime 将不会参考明确未导出的远程对象。
- ObjectOutputStream 替换表格性能
在以前的实施中,有个ObjectOutputStream实例可记忆经替换的对象(亦即,那些通过调用ObjectOutputStream.replaceObject或由类定义的writeReplace方式所返回的对象),其方法为使用线性搜索来判定对象是否经过替换。 因此,如果在一个给定的串流中所替换的对象数很大,则对每一个已序列化的新对象的搜索代价会成为惊人的耗费。这个错误已经修复, 因此现在该实施使用更有效的算法来记忆对象替换。这项对对象序列化实施的修复有助于配置 RMI 参数和返回值期间对象替换的可调整性。
下列注释是有关本发行版中的 CORBA、RMI-IIOP 和 Java IDL 功能。
- Sun ORB 未经测试与来自其他供应商 ORB 的连接操作能力,且 Sun ORB 并不保证适用于其他供应商的 ORB。
- 如果 J2SDK 1.3.1 服务器首先与 J2SDK 1.3 客户机连接,然后 J2SDK 1.3.1 客户机将试图发送“可序列化的”实例(其分别 在其 writeObject 或 readObject 方法中使用 writeUTF 或 readUTF),则会发生 MARSHAL 异常状况。同样地,如 果 J2SDK 1.3.1 服务器首先与 J2SDK 1.3.1 客户机连接,然后 J2SDK 1.3 客户机试图发送相同类型的类实例,则将会发生 MARSHAL异常状况。这个问题被列为错误 4434140 进行跟踪。
解决方法 - 将“可序列化的”类更改为使用 writeObject 和 readObject 而非 writeUTF 和 readUTF。
- J2SDK 1.3 会将 writeUTF 和 readUTF 调用映射到 CORBA 字符串,而非 wstrings。因此,大于 8 位字 符的 String 不能使用这些方法来发送。在 J2SDK 1.3.1 中已修复这个问题,但若与 J2SDK 1.3 通信,则仍有相同的限制。这个问题被列为错误 4379597 进行跟踪。
解决方法 - 使用 writeObject 和 readObject 而非 writeUTF 和 readUTF。当方法参数 为 String 时,JDK 1.3.1 和 J2SDK 1.3 都会将这些映射到 CORBA wstring 调用。
- 随 J2SDK 1.3.1 交货的 Java ORB 包含修订方案, 支持对可序列化类的拓展性更改, 如 Java 序列化规范所指定。
由于这项支持,J2SDK 1.3.1 和将来的 J2SDK 发行版都可处理类拓展。比方说,如果在 J2SDK 1.3.1 中 提供的类 V 在将来的 J2SDK 发行版中拓展,就可以在 J2SDK 1.3.1 上运行的应用程序客户机(发送/接收类 V) 与在将来的 J2SDK 发行版中运行的服务器(接收/发送拓展的类 V)交互运作,反之亦然。
不过,以前版本 J2SDK 1.3.0 中有防止类拓展的错误。 (例如,请参见 Java Developer Connection
SM 网站上的错误报告 4365188。)因此,当 J2SDK 1.3.1 试图发送任何已拓展的类给 J2SDK 1.3 时,将会有连接操作能力问题。
- 当编写 OMG IDL 代码时,请不要使用界面名称作为模块的名称。这么做会有风险,在应用不同供应商的工具进行编译时可能会生成不一致的结果,因而危及代码的可移植性。例如,从 Sun Microsystems 使用 IDL 对 Java 编译程序编译包含相同名称的代码,会生成一个结果。使用另一个供应商的 IDL 对 Java 编译程序所编译的相同代码,可能生成不同的结果。
Java 2DTM 库中的错误 4178909 有时会使应用程序在运行 8 位模式时无法正确显示。 这个问题应只影响应用程序在重新启动或显示模式设为 8 位之后的第一次运行时。还有一些与 DirectDraw 相关的错误。如果您遇到 DirectDraw 问题,应考虑关闭 DirectDraw:
-Dsun.java2d.noddraw=true某些监视器驱动程序将会导致在访问 DirectDraw 时,监视器映像(包括窗口)会再同步或跳转。如果您看到这种情况,请查看制造商的站点是否有新版的驱动程序可解决问题。
Java 平台不支持 16 色显示。如果您在 16 色显示器上绘制图形和 GUI 组件,请尝试将色彩深度更改为 256 色或以上的模式。
下列功能已经过实施并可运作,但未经完整测试,且在本发行版中并不支持。
- 拖放传送下列各项:
- 平台原始的数据类型和(或)用户定义的数据类型
- 任意类的实例,在相同的 JVM* 中由不同的 ClassLoader 实例装载
- JVM(或 ClassLoaders)之间的已序列化的 Java 对象
- 在 JVM 之间 RMI java.rmi.Remote 子界面的链接
AWT 和 Swing 组件有实施 Java Accessibility API 内部类,并提供适合组件的可访问性支持。不过,在本发行版中并没有完整实施下列 AWT 类的可访问性支持:在将来的 Java 2 平台发行版中,将会实施所有组件的完整可访问性支持。java.awt.TextComponent java.awt.Menu java.awt.MenuItem java.awt.List
下列注释是有关本发行版中的 AWT 和 Swing 功能。
- 调用静态方法 Toolkit.getDefaultToolkit 的程序不会终止和返回命令提示。这个问题被列为错误报告 4030718 和 4403762 进行跟踪,将会在 J2SDK 1.4.0 Beta 中解决。
解决方法 - 当您的应用程序完成时,请调用 System.exit()。
- 新 Component.getListeners() 方法无法返回 PropertyChangeListeners。如果您已使用 addPropertyChangeListener() 添加侦听器,
将会返回空数组。myComponent.getListeners(PropertyChangeListener.class)
- 错误 4199374 与 JWindow 对象的焦点管理问题有关。特别是,这个错误 会使 Component.requestFocus() 无法提供焦点给 JWindow 中的组件。这个错误已在更新版 J2SDK 1.2.2_05 和 J2SDK 1.3.0_02 中修复。不过,在 J2SDK 1.3.1 中并未加以修复。
在 Windows NT 上,JDBC 2.0 桥接支持 ODBC 2.x 和 ODBC 3.x 驱动程序管理器和驱动程序。JDBC 2.0 桥接经测试仅适用于 ODBC 3.x 驱动程序管理器以及 ODBC 2.x 和 3.x 驱动程序。Merant 建议 JDBC 2.0 桥接与 Merant 的 DataDirect ODBC 3.5 或以上版本的驱动程序一起使用。
下列为本发行版的安全相关问题。如果代码签名的证书不是自签的,jarsigner 实用程序可验证 Netscape SignTool 1.3 所签名的文件。 请注意,您可从 VeriSign TM 获取正式的 Netscape 代码签名证书。该证书是由 VeriSign 发出的。它们不是自签的。如果代码签名的证书是自签的,则 Netscape SignTool 1.3 不会将证书置于签名文件中, 同时如果签名文件不包含签名者的证书,jarsigner 不能验证已签名的 JAR 文件。请注意, SignTool 1.3 本身所生成的代码签名证书仅供测试,且不是自签证书。 有一个已知的问题是,如果代码签名的证书是自签测试证书,则 jarsigner 不能验证 Netscape SignTool 1.3 所签名的 JAR 文件。
在 Java 2 SDK 中,应用程序类是由实际的 ClassLoader 实例装载。这使得应用程序类能够使用已安装的扩展项目,并将应用程序类路径(由用户指定)与 bootstrap 类路径(其为固定的,且用户通常不应加以修改)分开。必要的话,可使 用 -Xbootclasspath 选项来替换 boostrap 类路径。 不过,这表示在 Java 2 SDK 中,缺省情况为应用程序类已不再具有所有许可权。相反的,依据已配置的系统安全策略授予其许可权。 这可能导致某些依据 1.0/1.1 中的原始安全模型编写其自己的安全代码的应用程序出现异常状况,且不在 Java 2 SDK 中启动。有一个解决方法是使用 oldjava 应用程序启动程序来运行这些应用程序,请转到 Java 应用程序启动程序参考页。
下列说明汇总与安全策略及签名相关的问题。
- Java 2 平台所使用的缺省安全策略实施是由 Java 安全属性文件 jre/lib/security/java.security 中的 policy.provider 属性所指定的。如果您指定非缺省的安全策略实施,必须将您新的、非缺省的安全属性类文件置于 bootclasspath 上。您可使用 -Xbootclasspath 命令行选项来运行此操作。 有关此选项的信息,请参见 Java 应用程序启动程序参考页。 这将会导致策略文件由 bootstrap 类装载器所装载。如果新的缺省策略文件是置于其他位置(例如在类路径或扩展项目上), 则它将不会被取用,而会改用 sun.security.provider.PolicyFile 中提供的缺省策略。
- 从 1.2.2 版开始,Java 2 SDK 使用新的类装载机制。在新的类装载器下, 如果属于 Jar 文件中某一软件包的任何类文件已经签名,则属于相同包的所有类文件都必须由同一个签名者签名。对于其中某包的类已签名,而另一些类未签名或由不同的签明者签名的 Jar 文件,已不能再使用。Jar 文件仍可包含未 签名的包。然而,如果有任何包包含已签名的类,则该包的所有类文件都要由同一位签名者签名。在 Java 2 平台版本中,将不能使用不符合此标准的现有 Jar 文件。
当前 keytool 工具可从文件导入或打印 Base64 编码的证书,不过该文件必须以新行(换行)终止。 如果证书文件的结束部分处没有换行,而您试图导入或打印证书, 则会出现“不受支持的编码”CertificateException 或 keytool 错误消息,例如“无法分析输入”或“输入不是 X.509 证书”。 如果出现这种消息或异常状况,则问题可能是遗漏用于终止的换行。发生这种情况的一种原因,是有时“证书认证中心”所回复的证书(响应证书签名请求)并不包含终止换行。
在 UNIX 中,您可运行下列命令来判定文件是否有终止换行:
od -xc <certificate_name>其中 <certificate_name> 是内含证书的文件名。比方说,如果文件名为mycert,则命令将会是od -xc mycert如果产生的输出在最末端有一个 "\n"(不带双引号),则在结束部分已有一个自动换行。若非如此,可添加一个换行。如果您不确定证书文件是否包含终止换行,您可在后续的每个段落中都添加换行(添加更多也无妨), 然后重试
-import或-printcert命令即可。如果命令现在可行,则问题就是遗漏换行。 如果仍然出现错误,则有不同的证书问题。若要将换行添加到 Base64 编码的证书文件的结束部分, 请在任一文本编辑器中打开文件,将光标置于文件结尾处,然后添加换行(或回车换行),例如按键盘上的 Enter 键即可。
联网
本发行版在联网 API 方面有下列的已知错误和限制:
- 在 Windows 2000 上,数据报应用程序可能会收到意外的 SocketException,指出 Socket 已关闭。这是在不能使用远程应用程序时,与 Windows 2000 中的新行为相关的问题。可能的解决方法为关闭并重建 DatagramSocket。这个问题被列为错误 4361783 进行跟踪。
- J2SDK 1.3.0 引入了 HTTP/1.1 客户机实施。 诸如 Apache 等 Web 服务器将经分段、编码的响应返回给 HTTP 1.1 客户机,但是 J2SDK 1.3.0 和 1.3.1 的分段、编码处理并不串流分段的来自服务器的响应。实际上,这表示直到服务器响应完成后,诸如 java.net.URLConnection.getInputStream 等方法才会返回。这个问题在错误 4333920 中说明。
解决方法: 对于 Apache,其解决方法为将下述命令置于 httpd.conf 中。BrowserMatch "Java1\.3\..[0-1]" downgrade-1.0
- HTML 4.0 规范建议“统一资源识别符 (Uniform Resource Identifiers, URI)”中的非 ASCII 字符应以一或多个 UTF-8 字节编码。许多已有的 CGI Script 是使用以其接收文档的代码中的字节来处理非 ASCII 字符。不过,类 URLEncoder 和 URLDecoder 并不支持这些处理 URI 中之非 ASCII 字符的任一方法。 相反的,这些类会按照基础平台缺省编码中定义的用一个或多个字节替换字符。这是错误 4257115。
- 当 Win98 或 WinNT 服务器发送的 HTTP 头字段中有额外的 CR 时,调用客户机上的方法 HttpURLConnection.getResponseCode 会导致虚拟机崩溃。 这是错误 4258697。
解决方法: 将 HTTP 服务器配置为发送 HTTP 1.0 响应,可避免堆栈溢出。若为 Apache,可将下列命令置于 httpd.conf 中来完成这项操作。BrowserMatch "Java1\.3\..[0-1]" downgrade-1.0如果您的应用程序使用联网类,则其在 Winsock 1.1 下可能不能稳定运行。如果您的联网应用程序必须支持 Windows 95(包含 Winsock 1.1),您会希望应用程序用户备有 Winsock 2.0(Windows NT 4.0、Windows 2000、 Windows ME 和 Windows 98 都包含 Winsock 2.0)。您可从下列网址下载 Winsock 2.0:
http://www.microsoft.com/windows95/downloads/contents/wuadmintools/s_wunetworkingtools/w95sockets2/
下列 URL 含有关于如何判定 Windows 95 平台上是否安装了 Winsock 2.0 组件信息:
http://support.microsoft.com/support/kb/articles/Q177/7/19.asp
Winsock 未升级,如果名称查阅失败,则 InetAddress.getByName 有可能会在 kernel32.dll 中崩溃。关于此错误的信息,请参见 Microsoft 站点。
http://support.microsoft.com/support/kb/articles/Q176/3/54.ASP
Java
TM Plug-in 组件下列说明是有关本版本中的 Java Plug-in 组件
- Linux 平台上,可从 web 浏览器打印多个 applet。浏览器必须在每次打印后关闭并重新启动。 这个问题被列为错误 4450194 进行跟踪。
- 当通过 Java Plug-in 组件安装扩展项目时,将会出现一个警告对话框,警告用户事实情况。 然而,如果用户单击“拒绝”按钮,有时此警告对话框仍然可能会重新出现, 询问用户是否要审批或拒绝同一个扩展项目的安装。在将来的发行版中将会修复这个错误。
- 在 1.3.0_01 版中,签名验证已改为使用 Sun Java Runtime Environment 随附的证书 CA 存储库,而非使用 Microsoft Internet Explorer 随附的存储库。进行这项更改的原因是 Internet Explorer 中的证书存储库不能用于 Netscape Web 浏览器中的 Applet。其他错误 - 1.3.1 版中已引入处理代码来处理不能验证的签名。请参见错误报告 4424604。
本地化注意事项
有关本发行版中的国际语言环境支持的一般信息,请参见本地化注意事项。文档
下列为本发行版的文档相关说明。
- 由于错误 4459595,此发行版的 API 规范中 Serialized Form 页包含一些到私有类和私有包类文件的损坏链接。
- 请参见新的联机文档 Tuning Garbage Collection with the 1.3.1 Java Virtual Machine。
工具无法转换 Solaris 2.6 上的日文 PCK 字符串
使用日文字符串作为 Solaris 2.6 ja_JP.PCK 语言环境上 java 命令的参数时出现错误。 要解决这个问题,请将行 89 /usr/java/bin/.java_wrapper 从exec $DEBUG_PROG "$prog" $opts "$@"变为exec $DEBUG_PROG $prog $opts $@繁体中文文本问题
下列为本版本中存在的已知繁体中文本体问题。
- Microsoft Windows 95 繁体中文 2.0 版并不包含 Java 2 SDK 的字体属性文件中指定的繁体中文字体。在该操作系统上使用 Java 2 SDK 或 Java 2 Runtime Environment 将会导致“找不到字体”警告,且文本的显示可能不正确。在 1996 年 10 月发行的新版 Microsoft Windows 95 繁体中文 2.0 版第 2 发行版上并不存在这个问题,且已包含指定的字体。
- 在 Microsoft Windows 95 上的繁体中文环境中, 中文字符在 Swing 组件中无法正确显示。 有关此问题的详细信息,请参见 Java Developer Connection
SM 网站的错误报告 4431319。
在英文语言环境中,Java 2 SDK 的 1.3.1 版受 Windows 2000 Professional、 Windows 2000 Server、Window 2000 Advanced Server 支持。Windows 2000 的 DataCenter 修订版则不受支持。在非英文语言环境中, 仅支持 Windows 2000 的 Professional Edition。已知的 Windows 2000 问题包括:
- Windows 2000 和多个监视器支持 - 在 Windows 2000 平台上,多个监视器尚未完全运作。 特别是,只有在所有的监视器都设为 256 色模式时,256 色模式的操作方式才会正常。极力建议采用 16 位(或更高)色彩模式。
- 若您在安装期间在 Windows 2000 上看到下列错误消息
config.nt. The system file is not suitable for running MS-DOS and Microsoft Windows Applications.它指出已在某些 Windows 2000 安装上出现的 %SystemRoot%\System32\COMMAND.COM 文件问题。如果您在试图启动安装程序时 出现这则错误消息,请参见 Microsoft 站点http://support.microsoft.com/support/kb/articles/Q142/2/71.asp以获取关于解决问题的信息。
- 进程当掉 - 应用程序可能因为在 Microsoft Windows 2000 Professional、Server 和 Advanced Server 操作系统上的 Ntdll 中死锁而当掉。例如,在使用 java.lang.Process 对象的输入和输出串流的应用程序中,就可能发生这个问题。如需详细信息(包括解决方法),请参见 Microsoft Support Services 站点:
http://support.microsoft.com/support/kb/articles/Q271/1/82.ASP
在安装 Java Runtime Environment 的 1.3.1 版 时,C:\Winnt\Downloaded Program Files\Java Runtime Environment 1.3.1 下的 ActiveX Control 文件具有“损坏”状态。 这只是表面问题,“损坏”状态在任一情况下都没有负面影响。不过,若您因某些原因没有损坏状态,这里也有一个解决方法。 转到“开始 -> 运行”,然后键入 "regedit"。从 regedit 窗口,转到注册表 项 "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Code Store Database\Distribution Units\8AD9C840-044E-11D1-B3E9-00805F499D93\DownloadInformation"。双击 INF 字符串,并删除 "Value data" 下突出的字符串。ActiveX Control 文件将具有“安装”状态。
|
Copyright © 2001 Sun Microsystems, Inc. All Rights Reserved. |
|