Eclipse Project не может найти классы Java 13 после преобразования в Maven

У меня есть старый проект в Eclipse, который отлично работает с Java 13. Я использую Eclipse 2019-09 (4.13.0), у меня есть Java 13 JRE на пути сборки и в качестве JRE по умолчанию уровень соответствия установлен на 13 , и установлен патч Eclipse Java 13. Нет проблем.

Когда я конвертирую это в проект Maven, некоторые классы JRE больше не встречаются. BitArray (находится в java.xml com.sun.org.apache.xalan.internal.xsltc.dom), DocumentImpl (находится в java.xml com.sun.org.apache.xerces.internal.dom), BevelBorder (находится в java.desktop com.sun.java.swing.plaf.motif.MotifBorders) и другие.

Если я наведу курсор на одно из полей, например BitArray, Eclipse предложит мне Импортировать BitArray (com.sun.org.apache.xalan.internal.xsltc.dom), но когда я это сделаю Я просто получаю сообщение об ошибке Невозможно разрешить импорт com.sun.org.apache.xalan

У меня в pom.xml есть следующие строки:

  <plugin>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.8.0</version>
    <configuration>
      <release>13</release>
    </configuration>
  </plugin>

Я сделал много обновлений Clean & Builds и Maven. Я пробовал изменить порядок в пути сборки (читал, что это была ошибка в более ранних выпусках). Я даже использовал пример проекта Hello World Maven с тем же результатом - как только я добавляю BitArray, он терпит неудачу.

Любые предложения будут ценны. Я искал это в Google уже полдня и до сих пор не нашел решения.


person Michael    schedule 22.11.2019    source источник
comment
Я бы никогда не стал использовать классы из com.sun.*.internal.*, лучше используйте реальные зависимости, потому что они более актуальны и т. Д., И вы предотвратите подобные проблемы. Проблема возникает на базе JDK13   -  person khmarbaise    schedule 22.11.2019
comment
В вашем проекте есть module-info.java файлы?   -  person nitind    schedule 22.11.2019
comment
@nitind нет, нет файлов module-info.java   -  person Michael    schedule 22.11.2019
comment
@khmarbaise вы имеете в виду все классы com.sun. * или, в частности, классы .internal.?   -  person Michael    schedule 22.11.2019
comment
В Java 9 и выше com.sun.org.apache.xalan.internal.xsltc.dom.BitArray системной библиотеки доступна только в том случае, если пакет com.sun.org.apache.xalan.internal.xsltc.dom модуля java.xml будет экспортирован (в командной строке через --add-exports java.xml/com.sun.org.apache.xalan.internal.xsltc.dom=ALL-UNNAMED). Для запуска старого проекта с Java 13 вы, вероятно, настроили его (в диалоговом окне Путь сборки Java на вкладке Зависимости модуля), но потеряли эту конфигурацию, преобразовав ее в Maven проект (см. мой ответ здесь).   -  person howlger    schedule 22.11.2019
comment
Если у вас нет информации о модуле, я настоятельно рекомендую провести рефакторинг вашего проекта и использовать внешние зависимости, в частности никогда не использовать com.sun. * И никогда не .internal ...   -  person khmarbaise    schedule 22.11.2019
comment
Вы в основном сталкиваетесь с проблемой, о которой предупреждали с незапамятных времен, при использовании классов, специфичных для реализации JVM, а именно, что они могут исчезнуть. Либо оставайтесь на более старой версии LTS, либо исправьте проблему с обслуживанием сейчас.   -  person Thorbjørn Ravn Andersen    schedule 24.11.2019
comment
Огромное спасибо за помощь. Комментарий от @howlger помог мне начать, пока я заменил внутренние классы, как первоначально предлагал khmarbaise   -  person Michael    schedule 04.12.2019