【问题标题】:M2Eclipse shows an error, but Maven compiles fineM2Eclipse 显示错误,但 Maven 编译正常
【发布时间】:2014-08-06 17:17:16
【问题描述】:

我总是遇到一些最晦涩难懂的问题,而且我经常会发现类似的问题但不适用于我的实际问题...

无论如何,我遇到了 M2Eclipse 的问题,在 Eclipse 中显示错误。目前,我的POM.xml 引用了某个版本的xml-apis:xml-apis(是的,我知道Xerces 的问题),显然xml-apis 替换而不是覆盖JDK 中的类。一个具体的例子是 JDK 中的 rt.jar 中的 org.w3c.dom.Element;这个类存在,但是xml-apis 有一个具有相同名称和包结构的类,有效地替换了它——至少 Eclipse 是这么认为的。

这对我不利的是,由于 xml-apis 替换了此实现而不是覆盖它,因此代码中有引用(我的任务是从 Ant 迁移到 Maven,您可以在其中更改构建order 和 Eclipse 将停止抱怨)库不匹配的地方......例如,Element e; e.getTextContext(); 将产生一个错误,例如“The method getTextContent() is undefined for the type Element”。不过,此错误仅显示在编辑器和 Eclipse 的“问题”窗口中。但是 Maven 编译就好了……那为什么 Eclipse 会报错呢?

据我所知,无法在 Eclipse 中更改 Maven 项目中的构建顺序以使其停止执行此操作。有人对此有任何解决方案吗?

作为参考(如果重要,我对此表示怀疑)我正在运行 Windows 7 Professional,使用 JDK 1.6 进行编译,并且正在使用 Maven 3.0.4。

【问题讨论】:

    标签: java eclipse maven pom.xml m2eclipse


    【解决方案1】:
    select your project > right click > properties > java build path > order and export > select JRE entry and hit down
    

    在这里你可以控制类路径条目的顺序,所以如果你想从 maven 获取你的 jar,首先将它移动到 JRE 的条目之前

    【讨论】:

    • 我不知道为什么我没有尝试这个。谢谢!但是有一个差异,那就是 maven 依赖项显然应该在 JDK 之后。
    • 为什么要在JDK的入口之后?
    • 打败我;我最初在 JDK 之前就有它,这就是导致错误的原因——将它切换到 JDK 修复它之后。我确信编译器有某种机制会注意到有一个具有重复路径/名称的类,并且只采用它在欺骗之前找到的第一个。
    • 第一个被捡起来
    猜你喜欢
    • 2018-07-28
    • 2014-08-27
    • 2011-12-30
    • 2012-03-23
    • 2017-02-08
    • 2016-06-02
    • 1970-01-01
    • 2015-01-26
    • 2013-12-24
    相关资源
    最近更新 更多