【问题标题】:How can I make XPathFactory newInstance fail in Java?如何使 XPathFactory newInstance 在 Java 中失败?
【发布时间】:2015-12-19 14:52:40
【问题描述】:

XPathFactory.newInstance(String uri) 的文档是 here

我试图让这个失败像这样:

println(System.getProperty("DEFAULT_PROPERTY_NAME"));
System.setProperty("DEFAULT_PROPERTY_NAME", "dummy");
println(System.getProperty("DEFAULT_PROPERTY_NAME"));
XPathFactory xPathFactory = XPathFactory.newInstance();
println(xPathFactory.getClass());

我得到的输出是:

null
dummy
class org.apache.xpath.jaxp.XPathFactoryImpl

我预计 ClassLoader 会因为要点而失败:

如果系统属性 DEFAULT_PROPERTY_NAME + ":uri" 存在, 其中 uri 是此方法的参数,然后将其值读取为 班级名称。该方法将尝试创建此类的新实例 通过使用类加载器,如果成功则返回它 已创建。

但事实并非如此,我显然遗漏了一些东西。

我做错了什么?

【问题讨论】:

  • 嗯,你设置属性DEFAULT_PROPERTY_NAME + ":uri"了吗?
  • @TassosBassoukos 抱歉,我不明白我错过了什么?

标签: java classloader system-properties


【解决方案1】:

我预计 ClassLoader 会因为要点而失败:

这个要点指的是方法:

public static final XPathFactory newInstance(String uri)

但你在打电话:

public static final XPathFactory newInstance()

其中规定:

此方法在功能上等价于:

newInstance(DEFAULT_OBJECT_MODEL_URI)

由于 W3C DOM 的实现始终可用,因此此方法永远不会失败。

【讨论】:

    【解决方案2】:

    请更改

    System.setProperty("DEFAULT_PROPERTY_NAME", "dummy");
    

    System.setProperty(XPathFactory.DEFAULT_OBJECT_MODEL_URI, "dummy");
    

    【讨论】:

      猜你喜欢
      • 2019-06-12
      • 2012-02-25
      • 1970-01-01
      • 2020-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-21
      相关资源
      最近更新 更多