Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在eclipse项目中更改JAR的顺序_Java_Eclipse - Fatal编程技术网

Java 在eclipse项目中更改JAR的顺序

Java 在eclipse项目中更改JAR的顺序,java,eclipse,Java,Eclipse,我最近将一个EclipseJava项目转换为一个动态web项目。在before和after项目中列出的导入JAR是相同的,但对dynamic web project的更改会导致以下编译错误: W3C_XML_SCHEMA_NS_URI cannot be resolved or is not a field 将由以下代码行引发: SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);

我最近将一个EclipseJava项目转换为一个动态web项目。在before和after项目中列出的导入JAR是相同的,但对dynamic web project的更改会导致以下编译错误:

W3C_XML_SCHEMA_NS_URI cannot be resolved or is not a field  
将由以下代码行引发:

SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
我研究过这个错误,它似乎是由不同JAR中冲突版本的
javax.xml.xmlstants
引发的,但我比较了两个项目中的JAR列表,它们是相同的,因此我认为必须更改JAR的顺序。如何做到这一点?

解决方案的一部分可能在逻辑上涉及到确定哪些JAR包含名为
javax.xml.xmlstants
的包。因此,我遵照@DiogoSantana的建议,使用类型向导在以下打印屏幕中获得结果:

然后我按照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>

com.sun.xml.bind
jaxb impl
2.2.7
jsr173_api
然后我在刷新eclipse项目之前运行了
mvn clean install
,甚至在eclipse中执行
maven..update project
,但错误仍然存在


注意:在
pom
中搜索字符串
infoset
不会产生任何结果,因此我尝试了下一个更高级别的
jar

首先使用mvn dependency:tree确定依赖于jsr173_api的依赖关系

假设是hibernate,就像你提到的(我不知道这是不是真的,没有检查出来)。您需要像这样排除jsr173_api:

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>4.3.6.Final</version>
    <exclusions>
        <exclusion>
            <groupId>jsr173_api</groupId>
        </exclusion>
    </exclusions>
</dependency>

org.hibernate
冬眠核心
4.3.6.最终版本
jsr173_api
现在(在Java 6和更新版本中),您不需要任何显式的JAXB、JAX-WS、XML流式API(JSR-173)或SAAJ JAR,因为它们都包含在JDK中。通常也有许多其他与xml无关的API可用,例如javax.activation


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

我也遇到了同样的问题,并通过执行以下操作得以解决:

  • 右键单击包含错误文件的模块
  • 单击“属性”
  • 从左侧选择“Java构建路径”
  • 现在在右侧,选择“订单和导出”选项卡
  • 单击“JRE系统库”并单击“向上”按钮,将其移动到“Maven依赖项”的顶部

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

    只需跳过错误并继续执行代码,只需在代码中包含下一行即可。它会起作用的

    final String W3C_XML_SCHEMA_NS_URI = "http://www.w3.org/2001/XMLSchema";
    

    将项目转换为动态web项目时,eclipse将JAR从服务器运行时添加到项目类路径。冲突应该是因为这一点。使用OpenType向导(Ctrl-Shift-T)查看该类的jar。我问,您使用的是maven吗?您使用的是XMLConstants的旧jar版本。尝试从您的项目中排除jsr173_api。@DiogoSantana我该怎么做?现在(在Java 6和更新版本中),您不需要任何显式的JAXB、JAX-WS或XML流式api(JSR-173)JAR,因为它们都包含在JDK中。如果您的环境是Java6或更高版本,则应该排除与这些相关的任何内容。这就是说,HyperJaxb3项目现在看起来非常死气沉沉……再次运行dependency:tree并检查jsr173是否消失了。您没有运行mvn eclipse:eclipse to maven重新配置eclipse项目吗?+1再次感谢您的帮助。我按照@SteveC的建议注释掉pom中对jaxb的引用,从而解决了这个问题。我在这里阅读了您的建议,然后使用
    eclipse
    中的
    Type向导
    ,看到
    JDK7
    也包含在一个单独的
    jar
    中的东西,然后用谷歌搜索
    jar
    名称来查找
    maven工件
    ,然后在我的
    pom.xml
    中注释掉
    maven工件
    。谢谢。感谢您和+1花时间为这个老问题添加见解。这应该是公认的答案。简单正确。非常感谢。即使我有一个渐变的身材,这也是我的工作。谢谢你节省时间