java - 修补或覆盖核心 Java 10 类的实现
问题描述
JFX 中有一个错误,在计算屏幕坐标时经常出现 https://bugs.openjdk.java.net/browse/JDK-8194727和 https://bugs.openjdk.java.net/browse/JDK-8190400
我已将问题追溯到 GeneralTransform3D 的实现,它是 javajfx 运行时的一部分。
我已经向 Oracle 提交了错误报告,但在它被接受、修复并发布之前,我需要一种修复我的应用程序的方法。
在 java 8 中,我能够创建一个包含该类的固定版本的 jar,并将其安装在 lib/ext 文件夹中。这似乎可行,并且 JFX 实现使用了我自己的 impl。
在 java 10 中,扩展机制已被删除。将补丁 jar 添加到类路径中不起作用,因为在类加载过程中为时已晚。
有没有办法覆盖/修补 Java 10 中核心 Java 类的实现?
请注意,我没有直接使用这个类,它是由框架使用的
解决方案
--patch-module javafx.runtime=patch.jar
是覆盖此模块中的类的正确方法
如果您需要“覆盖”平台模块中的类,请使用--patch-module
它。如果这会拖累额外的依赖项,请确保使用--add-reads
.
推荐阅读
- r - 在 Rscript 中使用从 ShinyApp 获取的变量
- sql-server - Azure 数据同步可以用作主到主数据库复制吗?
- php - 我的前端不会与我的 Heroku 后端交互
- python - guvectorize 在 nopython 模式下不解析类型
- c++ - 虚拟模板成员方法!一个实用的解决方法
- excel - 如何在后台启动浏览器,同时在用户窗体中运行宏的 Excel VBA 在前台保持活动状态
- mysql - SELECT,从 JOIN 上的 WHERE 获取反转结果
- python - Pandas - 滚动获取最后一个非 Nan 值加上列中非 Nan 的计数
- python - 重复用户输入 Python
- wordpress - WooCommerce 过滤类别和子类别