【问题标题】:Issue with build path构建路径问题
【发布时间】:2013-12-03 15:50:16
【问题描述】:

我正在尝试在下面的代码中使用 setTextContent 方法,但在 Eclipse 中出现此编译错误:

setTextContent(String) 类型的方法 Element 未定义

但是一旦我改变了构建路径的顺序,我就可以毫无错误地编译这段代码。

import org.w3c.dom.Element;
import org.w3c.dom.Node;

Element element = (Element) list.item(i);
Node node = list.item(i);
if ("Date ".equals(node.getNodeName())) {
    element.setTextContent("");
}

除了更改构建路径之外,还有其他方法吗?

【问题讨论】:

  • 绝对看起来像是构建路径/类路径问题。类路径中的任何 Element 类都没有 setTextContent(String) 方法。

标签: java xml-parsing buildpath


【解决方案1】:

getTextContent/setTextContent 方法是在 DOM Level 3 中引入的 - 它是在 Java 5 中添加的。您使用的是哪个版本的 jre,还要检查您是否安装了两个 jre。

您需要在 Eclipse 中转到项目的属性。然后选择“Java Build Path”并选择“Order and Export”选项卡。在这里你可以安排依赖的顺序。确保您的 JRE 高于 Maven 依赖项。

转到 Order and Export 选项卡,选择 jdk 库并单击按钮 TOP 将其一直向上移动,因此必须是第一个使用的库。

xml-apis-1.0.b2.jar(或您拥有的版本)一直移动到底部,越过内置的 JVM 库。

【讨论】:

  • 已解决!!我的 JRE 低于 maven 依赖项。我刚刚将 JRE 移到了 maven 依赖之上,错误消失了!!
【解决方案2】:

不要在同一个类中包含两个具有相同方法签名的库。

换句话说,如果你复制完全限定的类,你就会受到类加载器的支配。当你可以控制它时,很好,但就个人而言,我认为这很可怕。

一个更不受欢迎的解决方案是从其中一个库中物理删除有问题的功能,但是您可能会遇到更更糟糕的问题。

【讨论】:

    猜你喜欢
    • 2021-11-26
    • 2020-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-29
    • 1970-01-01
    • 1970-01-01
    • 2010-11-08
    相关资源
    最近更新 更多