Исправить или переопределить реализацию базового класса Java 10 - PullRequest
0 голосов
/ 13 июня 2018

В 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-файла patch в путь к классам не работает, так как в процессе загрузки классов уже слишком поздно.

Есть ли способ переопределить / исправить реализацию основных классов java в Java 10?

Обратите внимание, что я не использую этот класс напрямую, он используется фреймворком

Ответы [ 2 ]

0 голосов
/ 17 июня 2018

Еще раз, Алан дает лучший ответ как комментарий .:) Цитата:

--patch-module javafx.runtime=patch.jar - это правильный способ переопределения классов в этом модуле

Если вам нужно переопределить класс в модуле платформы, используйте--patch-module, чтобы сделать это.Если это приводит к дополнительным зависимостям, убедитесь, что они читаются с --add-reads.

0 голосов
/ 13 июня 2018

Похоже, что решение возможно с использованием агентов Java, согласно этому вопросу

Замените класс в библиотеке классов Java на пользовательскую версию

...