java源代码未使用jdk 6进行编译。
import org.w3c.dom.Node;
Node node = list.item(0);
String txtContent = node.getTextContent();
在jdk 6中找不到getTextContent()
如何解决这个编译问题。
答案 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)
我也遇到过类似的问题。它与源代码无关。解决问题的步骤是,
答案 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。