Java 在eclipse项目中更改JAR的顺序
我最近将一个EclipseJava项目转换为一个动态web项目。在before和after项目中列出的导入JAR是相同的,但对dynamic web project的更改会导致以下编译错误: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);
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或更高版本,则应排除与这些相关的任何内容。我也遇到了同样的问题,并通过执行以下操作得以解决:
要解决此问题,请打开项目的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花时间为这个老问题添加见解。这应该是公认的答案。简单正确。非常感谢。即使我有一个渐变的身材,这也是我的工作。谢谢你节省时间