Ошибка компиляции в Node.getTextContent для jdk 6

java Исходный код не компилируется с помощью jdk 6.

 import org.w3c.dom.Node;
 Node node = list.item(0);
 String txtContent = node.getTextContent();

getTextContent() не найден в jdk 6

как решить эту проблему компиляции.

Ответ 1

Я пришел сюда с той же проблемой. Еще хуже: у меня было два проекта бок о бок, оба были нацелены на те же JRE (1.6), и один смог разрешить Node.getTextContent(), а другой - нет. Я решил это как-то случайно; Я пошел в недвижимость проекта | Путь сборки Java | Вкладка "Заказ" и "Экспорт", выбрала JRE (которая была внизу списка) и нажала кнопку "Вверх", чтобы переместить ее вверх. Моя проблема исчезла. Похоже, что Node, который я хотел, был скрыт другим.: -\Возможно, это поможет с вашей проблемой.

Ответ 2

Хотя поздняя почта... может быть, кто-то найдет это полезным.

Мне не нравилась настройка ручного проекта с JRE сверху, потому что все мои коллеги должны были проходить через это каждый раз, когда проект был импортирован, поэтому я нашел другое решение.

В моем случае у меня было следующее дерево зависимостей: org.reflections(0.9.8) → dom4j (1.6.1) → xml-apis (1.0.b2).

Чтобы исправить это, я добавил исключение в зависимости org.reflections, например:

<dependency>
    <groupId>org.reflections</groupId>
    <artifactId>reflections</artifactId>
    <version>0.9.8</version>
    <exclusions>
        <exclusion>
            <groupId>xml-apis</groupId>
            <artifactId>xml-apis</artifactId>
        </exclusion>
    </exclusions>
</dependency>

В вашем случае, возможно, есть другая зависимость, которая импортирует неисправную банку. Например: Работа с "Xerces hell" в Java/Maven?

Пожалуйста, проверьте http://www.jarfinder.com/index.php/java/info/org.w3c.dom.Node, чтобы увидеть все банки, содержащие этот класс.

Ответ 3

Я также столкнулся с подобной проблемой. Это не связано с исходным кодом. Шаги для решения проблемы:

  • Перейти к свойствам проекта (щелкните правой кнопкой мыши по проекту и выберите свойства)
  • Выберите путь сборки Java.
  • Перейдите на вкладку "Заказ и экспорт"

Настройка порядка и экспорта в пути построения

  1. Убедитесь, что ваша библиотека JRE находится в ТОП. Если он не находится в верхней части, сделайте его сверху.
  2. Нажмите "ОК" и посмотрите после завершения процесса сборки в правильном направлении.

Ответ 4

Для тех, кто работает с спящим режимом, решение похоже на virussu_ro выше.

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>4.3.6.Final</version>
            <exclusions>
                <exclusion>
                    <groupId>xml-apis</groupId>
                    <artifactId>xml-apis</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

Ответ 5

Возможно, длинный снимок, но вы уверены, что используете JDK 6? Иногда IDE, такие как Eclipse, имеют раскрывающийся список в окне проекта, который позволяет вам выбрать версию, и может быть установлено значение 1.4. Или вы можете неправильно установить свой CLASSPATH. Стоит проверить, был ли у вас когда-либо установлен Java 1.4.

Я спрашиваю, потому что в JDK 1.5 был добавлен Node.getTextContent, поэтому единственный способ объяснить его отсутствие состоит в том, что вы используете версию 1.4 для Java версии .w3c.dom.Node.

Ответ 6

Попробуйте запустить этот код, чтобы определить местоположение контейнера:

    System.out.println(System.getProperty("java.version"));
    ProtectionDomain domain = org.w3c.dom.Node.class.getProtectionDomain();
    System.out.println("domain: " + domain);
    CodeSource codeSource = domain.getCodeSource();
    if(codeSource != null) {
       System.out.println("location: " + codeSource.getLocation());
    } else {
        System.out.println("null location, probably JRE class");
    }

Может быть, есть jar на пути к классам, который содержит класс org.w3c.dom.Node и скрывает правильный.