本文汇总了所有 Java SE 8u181 BPR 的变更。下面将从最新 BPR 开始,按日期顺序介绍错误修复和所有其他变更。请注意,新版本 BPR 包含之前版本的错误修复。
您可以使用以下命令判断 JDK 软件版本:
java -version
错误修复
| 错误 ID | 组件 | 子组件 | 总结 |
|---|---|---|---|
| 8211107 | core-libs | javax.naming | LDAPS 与 jdk 1.8.0_181 通信失败 |
错误修复
| 错误 ID | 组件 | 子组件 | 总结 |
|---|---|---|---|
| 8204513 (机密) |
部署 | deployment_toolkit | 在使用 Forms 的客户机小应用程序中调整浏览器窗口大小后,上下文丢失 |
错误修复
| 错误 ID | 组件 | 子组件 | 总结 |
|---|---|---|---|
| 8201818 | client-libs | 2d | [macosx] 通过 "java.awt.print.Book" 对象打印属性,突破页面大小设置 |
错误修复
错误修复
| 错误 ID | 组件 | 子组件 | 总结 |
|---|---|---|---|
| 8202696 | client-libs | javax.swing | 移除 Windows fontconfig.properties 中 Phonetic 字符的排除范围 |
| 8206242 (机密) |
部署 | webstart | Java Web Start 在打开 http 连接时检查 "user.dir" 读取权限 |
请注意,此版本包含了上一 BPR (8u172 b37) 版本中的修复。
错误修复
| 错误 ID | 组件 | 子组件 | 总结 |
|---|---|---|---|
| 8195095 | client-libs | javax.swing | 图片无法在 JEditorPane 中正确缩放 |
2018 年 7 月 17 日
这一更新发行版的完整版本号为 1.8.0_181-b13(其中 "b" 表示 "build"),版本号为 8u181。
JDK 8u181 包含 IANA 时区数据版本 2018e。有关详细信息,请参阅 JRE 软件中的时区数据版本。
JDK 8u181 发行时指定的 Java 运行时环境 (JRE) 安全基线如下表所示:
| JRE 系列版本 | JRE 安全基线(完整版本号) |
|---|---|
| 8 | 1.8.0_181-b13 |
| 7 | 1.7.0_191-b08 |
| 6 | 1.6.0_201-b07 |
当任何一个修复了安全漏洞修复的新发行版可用时,JRE 就会到期。重要补丁更新、安全警报和公告页面会提前一年宣布包含安全漏洞修复的重要补丁更新。这一 JRE(版本 8u181)将于 2018 年 10 月 16 日下一个重要补丁更新发布后到期。
对于无法访问 Oracle 服务器的系统,Oracle 将通过辅助机制,使该 JRE(版本 8u181)于 2018 年 11 月 16 日到期。在满足两项条件(新发行版可用或到达到期日期)中的任何一项后,JRE 将向用户发送警告,提醒用户更新到新版本。有关详细信息,请参阅 JRE 到期日期。
other-libs/javadb
这一发行版移除了 Java DB(也被称为 "Apache Derby")。
我们建议您直接从 Apache 项目获取最新的 Apache Derby:
JDK-8197871(非公开)
core-libs/javax.naming
LDAPS 连接已启用端点识别。
为了提高 LDAPS(基于 TLS 的安全 LDAP)连接的稳定性,默认启用端点识别算法。
请注意,在某些情况下,某些之前成功连接 LDAPS 服务器的应用可能无法再次连接 LDAPS 服务器。当适用时,此类应用可使用新系统属性来禁用端点识别:com.sun.jndi.ldap.object.disableEndpointIdentification。
只需定义该系统属性(或将其设置为 true)即可禁用端点识别算法。
JDK-8200666(非公开)
core-libs/java.io:serialization
在反序列化的对象创建阶段新增访问检查特性。一般情况下,这不会影响反序列化。但是,基于 JDK 内部 API 的反射框架可能会受到影响。如有必要,请将系统属性 jdk.disableSerialConstructorChecks 设置为 "true" 来禁用这一新增检查功能。该操作只能通过向 Java 命令行添加参数 -Djdk.disableSerialConstructorChecks=true 来执行。
JDK-8197925(非公开)
以下是该发行版的一些值得关注的错误修复:
core-svc/debugger
无法使用 JDK 8 中的 JDWP API 对 JDK 9 及后续版本进行错误调试
现已修正 VirtualMachineImpl.canGetInstanceInfo() 实施,可在 JDK 9 及后续版本中查看 JDK JVM。
此次修正解决了某些调试代理无法正常运行的问题,无需用户(开发人员)执行任何操作。
请参阅 JDK-8197943
hotspot/gc
G1 并发标记不可访问的 klass 现可在 ClassLoaderData/SystemDictionary 中查找,而且其 _java_mirror 或 _class_loader 字段可存储在根中或任何可使其重新活动的其他可访问对象中。每当一个 klass 以这种方式复活时,请通知 G1 的 SATB 部分,否则并发标记备注阶段将错误地卸载该 klass。
发生这一特殊崩溃时,虽然 G1 正在执行并发标记并准备了不可访问类的列表,但 Java 线程上的 JVMTI 可以遍历 CLD 中的类,并为加载的类的 java_mirror 存储线程局部 JNIHandles。由于 G1 不了解这些线程局部 JNIHandles,在注释阶段,它会根据先前对无法访问的类的了解卸载这些类。稍后扫描这些 JNIHandles 时,就会发生崩溃。
JDK-8187577 修复程序将通知 G1 SATB klass 已重新复活,不应被卸载。
请参阅 JDK-8187577
hotspot/gc
提高较旧 NUMA 库 (-XX+UseNuma) 的稳定性
JDK 8 Update 152 中的一项修复引入了一项回归特性,当在 libnuma 版本低于 2.0.9 的 Linux 系统上使用 UseNUMA 标志时,它可能导致 HotSpot JVM 在启动期间崩溃。该问题已解决。
请参阅 JDK-8198794
该发行版还包含 Oracle 重要补丁更新中所述的安全漏洞修复。
| # | 错误 ID | 组件 | 子组件 | 总结 |
|---|---|---|---|---|
| 1 | JDK-8201433 | client-libs | 2d | 修复 BufImg_SetupICM 中的潜在崩溃 |
| 2 | JDK-8198605 | client-libs | java.awt | 对不可聚焦的文本组件显示触摸键盘 |
| 3 | JDK-8198606 | client-libs | java.awt | 当文本组件失去焦点时触摸键盘不隐藏 |
| 4 | JDK-8199748 | client-libs | java.awt | 当文本组件从其他文本组件获得焦点时不显示触摸键盘 |
| 5 | JDK-8187635 | client-libs | java.awt | 在 Windows 上,当窗口激活时 Swing 更改键盘布局 |
| 6 | JDK-8203368 | core-libs | java.io:serialization | ObjectInputStream filterCheck 方法抛出 NullPointerException |
| 7 | JDK-8202996 | core-libs | java.rmi | 移除 RMI 修复中的调试打印语句 |
| 8 | JDK-8197943 | core-svc | 调试器 | 无法使用 JDK 8 中的 JDWP API 来调试 JDK 9 VM |
| 9 | JDK-8194690 | 部署 | App-V 程序包中捆绑的 JRE 将不启动 Java Web Start 应用 | |
| 10 | JDK-8190689 | 部署 | 插件 | Java 错误地要求 "HttpOnly" cookie 属性区分大小写 |
| 11 个 | JDK-8201133 | 部署 | webstart | 使用 jnlp.versionEnabled 和部署规则集功能对 main jar 下载进行安全检查失败 |
| 12 | JDK-8189783 | 部署 | webstart | 从浏览器第二次调用时,具有文件扩展名关联的 Java Web Start 应用从高速缓存中移除 |
| 13 | JDK-8187223 | 部署 | webstart | Long JNLP 文件未正确解析并以 javaws 路径结束 |
| 14 | JDK-8199304 | 部署 | webstart | javaws.exe 无法启动 UTF-8 编码的 JNLP 文件 |
| 15 | JDK-8038636 | 热点 | 编译器 | 预测陷阱在重新定义类时中断 |
| 16 | JDK-8156137 | 热点 | 编译器 | SIGSEGV in ReceiverTypeData::clean_weak_klass_links |
| 17 | JDK-8188223 | 热点 | 编译器 | IfNode::range_check_trap_proj() 使用单个 if proj 处理失效子图 |
| 18 | JDK-8169201 | 热点 | 编译器 | Montgomery multiply intrinsic 使用正确名称 |
| 19 | JDK-8187577 | 热点 | gc | GC 执行并发标记期间发生 JVM 崩溃 |
| 20 | JDK-8199406 | 热点 | gc | 使用 Java JDK 1.8.0_162-b32 时性能下降 |
| 21 | JDK-8055008 | 热点 | jvmti | 清除用于保存旧版本重定义类的代码 |
| 22 | JDK-8057570 | 热点 | jvmti | RedefineClasses() tests fail assert(((Metadata*)obj)->is_valid()) failed: obj is valid |
| 23 | JDK-8198794 | 热点 | 运行时 | 使用 libnuma 2.0.3 向 Cassandra 3.11.1 启动时发生热点崩溃 |
| 24 | JDK-8078628 | 热点 | 运行时 | linux-zero 在缺失预编译头文件时不构建 |
| 25 | JDK-8202065 | 安装 | 安装 | 从 8u171 开始,Windows 的 server-jre 中缺少 jre/bin/javaw.exe |
| 26 | JDK-8199650 | 安装 | 安装 | JDK 安装卸载公共 JRE |
| 27 | JDK-8200418 | javafx | WEB | webPage.executeCommand("removeFormat",null) 移除正文元素样式 |
| 28 | JDK-8196011 | javafx | WEB | 使用 JFXPanel 应用中的 WebView 时发生间歇性崩溃 |
| 29 | JDK-8076117 | security-libs | java.security | EndEntityChecker 不应在 PKIX 验证后处理自定义扩展包 |
| 30 | JDK-8170035 | security-libs | javax.net.ssl | 在确定密码套件列表时无禁用套件的调试输出。 |
| 31 | JDK-8074373 | 工具 | 启动器 | 在类路径说明符后指定 NMT 选项后 NMT 未启用 |
| 32 | JDK-8196491 | xml | jax-ws | SOAP 请求的 JAXB 字符串值中的换行符转义为 " " |
注:为免疑义,本网页所用以下术语专指以下含义: