JDK 10 не может импортировать javax.xml.namespace в Eclipse

Это очень странно. Я перемещаю динамический веб-проект с Java 8 на Java 10.

Последнее, что я не могу разрешить с зависимостью, - это класс javax.xml.namespace.QName.

Вы можете видеть на прикрепленном снимке экрана, что класс QName существует в системной библиотеке JRE, но IDE продолжает жаловаться на то, что QName не может быть разрешено в тип. JDK 10 не может импортировать javax.xml.namespace в Eclipse

Почему вы переходите на Java 10, а не на Java 11: java 10 уже является EOL. Согласно снимку экрана, вы не импортировали что-либо из пакета javax.xml.namespace: сделайте это в первую очередь. В любом случае опубликуйте минимальный воспроизводимый пример и укажите, используете ли вы также модуляризацию, поскольку пакеты javax.xml. * Находятся в модуле java.xml.

Mark Rotteveel 09.10.2018 14:56

Я не понимаю твоего беспокойства. На вашем скриншоте самое первое предложенное быстрое исправление: Импортировать QName (java.xml.namespace). Если вы выберете это быстрое исправление, ваша проблема не решена? Или проблема в том, что вы делал выбрали это быстрое исправление, но QName остался нерешенным? В любом случае, пожалуйста, обновите свой пост, чтобы явно указать, что произойдет после того, как вы выберете это быстрое исправление для импорта QName. На данный момент ваш вопрос неясен по этому поводу.

skomisa 10.10.2018 00:10

Спасибо за комментарий и извините, что скриншот не понятен. На самом деле, если я выберу быстрое исправление и импортирую класс, компилятор все равно будет жаловаться на то, что класс QName не разрешим.

Ivan 12.10.2018 01:26

У меня такая же проблема ... У моего pom она есть, и Eclipse ее видит и даже находит с помощью ctrl-space, но жалуется, что все равно не может быть разрешен для типа

chrislhardin 22.10.2018 12:17
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
5
4
12 507
5

Ответы 5

У меня была такая же ошибка при переходе с Java 8 на Java 11, и я включил явную зависимость от библиотеки stax-api 1.0-2:

<dependency>
  <groupId>javax.xml.stream</groupId>
  <artifactId>stax-api</artifactId>
  <version>1.0-2</version>
</dependency>

и исключили любую переходную зависимость от библиотеки stax-api 1.0.1:

    ...
    <exclusion>
      <groupId>stax</groupId>
      <artifactId>stax-api</artifactId>
    </exclusion>
    ...

После этого моя IDE правильно нашла потерянный импорт javax.xml.namespace.QName.

Надеюсь, это поможет.

Попробуйте изменить порядок элементов в пути к классам. JRE должна быть до Maven Dependencies. Это решает проблему.

Я предполагаю, что компилятор Java 10 замечает, что вы пытаетесь заменить внутренние классы (java.xml.namespace) кодом из JAR, и ему это не нравится.

Вероятно, существует дублирующая зависимость, полученная из какой-то другой зависимости.

В затмении

  1. "Навивате -> Открытый Тип ..."
  2. Введите «java.xml.namespace».
  3. Если есть результаты, отличные от вашего (Open-) JDK, их необходимо удалить, выполнив следующие действия. В моем случае это был xml-apis
  4. Откройте свой pom.xml в eclipse и перейдите на вкладку «Иерархия зависимостей», чтобы проверить, какая зависимость вытаскивала в xml-apis
  5. В фильтре введите «xml-apis». В моем случае зависимость верхнего уровня, которая вытаскивала xml-apis, была "esapi"
  6. исключить xml-apis из зависимости esapi:

    <dependency>
        <groupId>org.owasp.esapi</groupId>
        <artifactId>esapi</artifactId>
        <version>2.2.0.0</version>
    
        <exclusions>
            <exclusion>
                <groupId>xml-apis</groupId>
                <artifactId>xml-apis</artifactId>
            </exclusion>
        </exclusions>
    
    </dependency>
    
  7. Щелкните правой кнопкой мыши свой проект и выберите «Maven -> Обновить проект ...». Проверьте свой проект и нажмите ОК.

Вот и все

Решил это, удалив jsr173_api.jar из пути к классам проекта (проект -> свойства -> путь сборки java -> библиотеки -> путь к классам). Он появляется снова, когда проект eclipse перестроен.

Это сработало! Проверка множественности типов Ctrl + Shift + T, удаление ненужных.

Другие вопросы по теме