Eclipse Java 11 classpath только не работает по сравнению с Maven - PullRequest
4 голосов
/ 03 апреля 2019

Перенос старой ERP-системы в JPMS оказался весьма проблематичным ( Java 11 Eclipse находит автоматический модуль, Maven не ), поэтому я решил сначала попробовать и просто заменить Java 8 на Java 11,но держите все в пути к классам, не вводя никаких файлов module-info.java.Это на самом деле прошло довольно гладко;Maven компилирует это без проблем, и результирующее приложение также запускается из командной строки.

Но когда я импортирую этот проект Maven в Eclipse 2019-03, он жалуется на пакеты ao java.xml, например этот импорт:

import javax.xml.namespace.QName;

Это имеет смысл, потому что JRE является модульным, и эти классы находятся в модуле java.xml, который я не включил.Но почему Maven правильно компилирует и приложение запускается под J11?

Я подозреваю, что мне нужно сообщить Eclipse «--add-modules = ALL-SYSTEM» для этого проекта, но я не уверен, где и как.Я попытался переместить все модули JDK / JRE в пути / библиотеках сборки из неявного в явное, но это не помогает.

1 Ответ

2 голосов
/ 04 апреля 2019

Возможно, у вас есть несколько избыточных jml api jar на classpath, и javac (неправильно) не жалуется из-за JDK-8215739 , но Eclipse уже (правильно) делает это после ошибка 536928

Во время выполнения JVM, похоже, игнорирует пакеты на пути к классам, которые уже появляются в именованном модуле, поэтому поведение javac фактически соответствует этому.

Чтобы устранить проблему: попробуйте "Открыть"Введите ", чтобы найти любые копии javax.xml.namespace.QName в jar-файлах на вашем пути к классам и исключите эти зависимости в вашем pom.xml

...