两个不同的.jar具有相同的包名称和相同的类名称。如何获得一个?

时间:2015-08-17 12:55:22

标签: java eclipse maven

在我的项目中,我有标准的java系统库和rt.jar,它有类。

package javax.xml;

public final class XMLConstants {

    private XMLConstants() {
    }

    public static final String NULL_NS_URI = "";
    public static final String DEFAULT_NS_PREFIX = "";
    ...
}

还包括带有类

的stax-api-1.0.jar
package javax.xml;

public class XMLConstants {
    public static final String DEFAULT_NS_PREFIX = "";
    public static final String XML_NS_PREFIX = "xml";
    public static final String XML_NS_URI = "http://www.w3.org/XML/1998/namespace";
    public static final String XMLNS_ATTRIBUTE = "xmlns";
    public static final String XMLNS_ATTRIBUTE_NS_URI = "http://www.w3.org/2000/xmlns/";
}

在第三课中,我需要获得看起来像这样的NULL_NS_URI

import javax.xml.XMLConstants;

public myClass(){

    doSomethin() {
        ...
        XMLConstants.NULL_NS_URI
        ...
    }
}

它给出了错误

NULL_NS_URI cannot be resolved or is not a field

当我按下ctrl +点击myClass中的XMLConstants时,eclipse将我带到stax-api.jar类。 当我在同事机器eclipse上做同样的事情时,将他带到rt.jar,没有错误,因为在该类中定义了NULL_NS_URI。

1 个答案:

答案 0 :(得分:6)

检查构建类路径顺序。如果rt.jar位于stax-api-1.0.jar之上,问题应该得到解决。因为,在编译时,编译器会按构建类路径顺序查找jar。