在eclipse项目中改变jar的顺序

Cod*_*Med 12 java eclipse

我最近将eclipse Java项目转换为动态Web项目.在项目之前和之后列出的导入jar都是相同的,但是对动态Web项目的更改会导致以下编译错误:

W3C_XML_SCHEMA_NS_URI cannot be resolved or is not a field  
Run Code Online (Sandbox Code Playgroud)

由以下代码行抛出:

SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
Run Code Online (Sandbox Code Playgroud)

我已经研究过这个错误,它似乎被javax.xml.XMLConstants不同罐子里的冲突版本所抛出,但是我比较了两个项目中的罐子列表并且它们是相同的,所以我认为必须改变罐子的顺序.怎么做到这一点?

部分解决方案可能在逻辑上涉及确定哪些罐包含名为的包javax.xml.XMLConstants.所以我按照@ DiogoSantana的建议,使用Type向导在以下打印屏幕中获得结果:

然后我按照DiogoSantana的建议运行mvn dependency:tree并得到以下结果:

我接下来做了以下更改pom.xml:

<dependency>
    <groupId>com.sun.xml.bind</groupId>
    <artifactId>jaxb-impl</artifactId>
    <version>2.2.7</version>
    <exclusions>
        <exclusion>
            <groupId>jsr173_api</groupId>
        </exclusion>
    </exclusions>
</dependency>
Run Code Online (Sandbox Code Playgroud)

然后我mvn clean install在刷新eclipse项目之前运行,甚至maven..update project在eclipse中运行,但错误仍然存​​在.

注意:搜索字符串infosetpom没有产生任何结果,所以我尝试了下一个更高级别jar.

小智 51

我有同样的问题,并通过执行以下操作来解决它:

  1. 右键单击包含错误文件的模块.
  2. 点击"属性"
  3. 从左侧选择"Java Build Path"
  4. 现在在右侧,选择"订购和导出"选项卡
  5. 单击"JRE系统库"并单击"向上"按钮将其移动到"Maven依赖项"的顶部

  • 这应该是公认的答案.简单而正确.谢谢! (3认同)

Ahm*_*OUR 7

要解决此问题,请打开项目的Build-Path菜单,切换到"Order and Export"选项卡,并确保Java System库位于列表顶部,而不是Maven依赖项.


Ste*_*e C 4

如今(在 Java 6 及更高版本中),您不需要任何显式的 JAXB、JAX-WS、XML Streaming API (JSR-173) 或 SAAJ jar,因为它们都包含在 JDK 中。还有许多其他非 xml 相关的 API 通常也可用,例如 javax.activation。

如果您的环境是 Java 6 或更高版本,您应该排除与这些相关的任何内容。