Я перевожу огромное монолитное приложение с Java 1.7 на 12, и я хочу сделать это правильно, используя как можно меньше хаков. Я по праву продолжаю сталкиваться с такими ошибками:
[ERROR] /home/idiot/projects/projects/blah/blah/src/blah/blah/blah/Blah.java:[8,18] package sun.nio.cs.ext is not visible
и
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project blah: Compilation failure
[ERROR] /home/idiot/projects/blah/blah/src/blah/blah/blah/Bblah.java:[152,42] package com.sun.org.apache.xerces.internal.dom is not visible
[ERROR] (package com.sun.org.apache.xerces.internal.dom is declared in module java.xml, which does not export it)
и такими предупреждениями, как этот
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.python.google.common.base.internal.Finalizer (file:/home/idiot/.m2/repository/own/plugin/own-plugin-1.jar) to field java.lang.Thread.inheritableThreadLocals
WARNING: Please consider reporting this to the maintainers of org.python.google.common.base.internal.Finalizer
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
Модуляризация этого бегемотавеб-приложение кажется невозможным, даже без соответствующего учебного пособия. Большинство результатов Google и стека являются решениями, применимыми к средам, предшествующим java 11. Большинство google-fu рекомендует использовать правильный пакет вместо того, который сейчас скрыт / устарел.
Задача и мой вопрос: как узнать, чем заменен устаревший API?
Существуют сотни и тысячи файлов, использующих рефлексы, com.sun.org
, sun.misc
пакеты, и после того, как определены шаги по поиску пакетов для замены, как решить эту проблему? Просто вручную пройтись по тысячам файлов и обновить?