Как исправить файл package-info.java при использовании модулей? - PullRequest
0 голосов
/ 16 февраля 2019

Я могу исправить файлы системного модуля, используя эти инструкции.https://openjdk.java.net/projects/jigsaw/quick-start#xoverride

При попытке этой же команды пропатчить package-info.java файл package-info.class не создается, если исправленная версия имеет то же содержимое, что и версия в модуле.Но это поведение не относится к java-файлам без информации о пакете.

javac --patch-module java.base = src -d mypatches / java.base \ src / java.base / java / util /concurrent / package-info.java

В своем исходном вопросе я упомянул следующую ошибку:

package-info.java: 2: ошибка: пакет существует в другом модуле: java.base

Я все еще пытаюсь создать игрушечный пример, чтобы воспроизвести эту ошибку.Основное отличие состоит в том, что я использую специальный системный модуль (--system), когда получаю эту ошибку.

1 Ответ

0 голосов
/ 17 февраля 2019

JEP 261 представляет --patch-module в качестве применения к файлам классов, поэтому может также применяться к package-info.class.Но затем он продолжается

Эффект каждого экземпляра заключается в изменении способа, которым система модулей выполняет поиск типа в указанном модуле.

Поскольку информация о пакете не определяет тип, вышеприведенное предложение подразумевает, что --patch-module не влияет на package-info.

Тем не менее, я верю, что приведено точное сообщение об ошибкеявляется случайным артефактом недопустимого поведения, как если бы package-info.java был скомпилирован как связанный с неназванным пакетом, несмотря на то, что он находился в пути исправления.

...