【问题标题】:Two different .jar with same Package name and same Class name. How to get the one?两个不同的 .jar 具有相同的包名称和相同的类名称。怎么得到那个?
【发布时间】:2015-08-17 12:55:21
【问题描述】:

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

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 是在该类中定义的。

【问题讨论】:

标签: java eclipse maven


【解决方案1】:

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

【讨论】:

  • 这行得通。我接受了答案,但不能赞成它说我需要更多的声誉。
  • 很高兴知道它有效。 :) 感谢您的接受.. 当您获得更多声誉时,您可以稍后投票.. :D
  • @ArkaGhosh 任何想法,在运行时 Java 会考虑执行哪个类文件
猜你喜欢
  • 2020-03-20
  • 2014-01-12
  • 2014-11-12
  • 2011-10-16
  • 2011-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-26
相关资源
最近更新 更多