Я обновил проект RCP Eclipse с Eclipse 2019-12 до 2020-03. После обновления я получаю ошибки сборки при экспорте, например: «Пакет javax. xml .parsers доступен из более чем одного модуля:, java. xml».
Я используя Java 11, без файла module-info. java, уровень совместимости Eclipse 3 и мастер экспорта продукта eclipse в моем проекте.
Сообщение об ошибке в принципе мне ясно. Он дважды обнаруживает некоторый класс в classpath, что недопустимо. После того, как класс предоставляется JDK модулем "java. xml". Вторая копия взята из javax. xml osgi bundle. Моя проблема в том, что оба пакета не могут быть удалены. Модуль JDK имеет много зависимых модулей JDK, которые активно используются в коде, и я не думаю, что они могут быть дополнены некоторыми библиотеками. Пакет OSGI используется многими базовыми пакетами eclipse c. Поэтому его также нельзя удалить.
Поэтому у меня есть два вопроса:
- Почему Eclipse RCP ломает проекты в своей новой версии? Это считалось ошибкой раньше? (Я не нашел тикет)
- Как я могу снова запустить мой проект без действительно больших изменений?
Редактировать 1: Добавлен воспроизводимый пример: https://workupload.com/file/wKUZTXJXsR9
Редактировать 2: См. Также Eclipse Bug Ticket: https://bugs.eclipse.org/bugs/show_bug.cgi?id=562761
Я создал минимальный пример. Можно увидеть проблему, экспортировав продукт через мастера. Я использовал DocumentBuilderFactory из javax. xml в приложении. java, чтобы вызвать проблему. Я обнаружил несколько вещей:
- Зависимость плагина от org.eclipse.help.ui необходима, чтобы вызвать проблему. Хотя и другие плагины имеют зависимости от плагина javax. xml.
- Eclipse сообщит вам о проблеме в редакторе, если вы добавите прямую зависимость к плагину javax. xml. Но у нас есть только транзитивная зависимость от него, и поэтому мы не получаем подсказки.
Это вызывает некоторые новые вопросы:
Кажется, что плагин org.eclipse.help.ui вызывает проблему, но он нам нужен в нашем приложении. Это возможная ошибка? Есть ли альтернативы? Почему редактор затмений не показывает проблему, если у меня есть только транзитивная зависимость от плагина javax. xml? Также возможная ошибка?