Node.getTextContent中jdk 6的编译错误

时间:2011-04-04 05:22:26

标签: java

java源代码未使用jdk 6进行编译。

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

在jdk 6中找不到getTextContent()

如何解决这个编译问题。

6 个答案:

答案 0 :(得分:89)

我带着同样的问题来到这里。更糟糕的是:我有两个并排的项目,都是针对相同的JRE(1.6),一个是能够解析Node.getTextContent()而另一个不是。我偶然解决了这个问题;我去了项目属性| Java构建路径| “订购和导出”选项卡,选择了JRE(位于列表底部)并单击“顶部”按钮将其移至顶部。我的问题消失了。似乎我想要的节点被另一个节点隐藏了。 : - \或许这会对您的问题有所帮助。

答案 1 :(得分:8)

虽然帖子很晚......也许有人会觉得这很有用。

我不喜欢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>

在你的情况下,可能还有另一个导入错误jar的依赖项。例如:Dealing with "Xerces hell" in Java/Maven?

请检查http://www.jarfinder.com/index.php/java/info/org.w3c.dom.Node以查看包含该类的所有广告。

答案 2 :(得分:7)

我也遇到过类似的问题。它与源代码无关。解决问题的步骤是,

  1. 转到项目属性(右键单击项目并选择属性)
  2. 选择Java Build Path
  3. 转到“订购和导出”标签
  4. Order and Export setting in Buildpath

    1. 确保您的JRE库位于TOP。如果它不在顶部,请将其置于顶部。
    2. 单击确定,然后在完成构建进度后查看。

答案 3 :(得分:3)

对于使用hibernate的人来说,解决方案类似于上面的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>

答案 4 :(得分:2)

可能是一个很长的镜头,但你确定你使用的是JDK 6吗?有时像Eclipse这样的IDE在Project窗口中有一个下拉列表,可以让你选择一个版本,它可以设置为1.4。或者您可能错误地设置了CLASSPATH。值得检查是否安装了Java 1.4。

我问因为JDK 1.5中添加了Node.getTextContent,所以我能解释它缺席的唯一方法是使用Java 1.4 version of org.w3c.dom.Node

答案 5 :(得分:1)

尝试运行此代码以确定jar的位置:

    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");
    }

也许在类路径上有一个包含org.w3c.dom.Node类的jar并隐藏了正确的jar。