首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >修补或重写核心Java 10类的实现

修补或重写核心Java 10类的实现
EN

Stack Overflow用户
提问于 2018-06-12 23:39:29
回答 3查看 1.1K关注 0票数 15

JFX中存在一个bug,在计算屏幕协调https://bugs.openjdk.java.net/browse/JDK-8194727https://bugs.openjdk.java.net/browse/JDK-8190400时经常会出现这种缺陷。

我一直在跟踪这个问题,直到GeneralTransform3D的实现,这是javajfx运行时的一部分。

我已经向Oracle提交了一个bug报告,但在它被接受、修复并发布之前,我需要一种修复我的应用程序的方法。

在java 8中,我能够创建一个包含这个类的固定版本的jar,并将其安装在lib/ext文件夹中。这似乎是可行的,JFX实现使用了我对自己的推动。

在java 10中,扩展机制已被删除。将补丁jar添加到类路径不起作用,因为在类加载过程中为时已晚。

是否有一种方法可以覆盖/修补java 10中核心Java类的实现?

注意,我不是直接使用这个类,而是由框架使用

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-06-17 18:05:20

再一次,Alan给出了a comment最好的答案。*引用:

--patch-module javafx.runtime=patch.jar是覆盖此模块中类的正确方法。

如果您需要“覆盖”平台模块中的类,请使用--patch-module进行此操作。如果这需要额外的依赖项,请确保使用--add-reads读取它们。

票数 5
EN

Stack Overflow用户

发布于 2019-09-17 20:59:51

我需要这样做,但我是通过JNI接口(而不是命令行)从C启动Java的。仅仅将命令行args转换到JavaVMOptions上就不起作用了。相反,这一切都在一个arg中进行,如下所示:

代码语言:javascript
复制
JavaVMOption options[N_ARGS] = { 0 };
options[0].optionString = "--patch-module=javafx.runtime=patch.jar";

花了很长时间才弄清楚这件事,所以希望它能节省别人的时间。

票数 2
EN

Stack Overflow用户

发布于 2018-06-13 01:44:31

根据这个问题,使用java代理解决方案是可能的。

Replace a class within the Java class library with a custom version

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50827263

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档