我从我的Tibco进程中调用java类的方法。该类使用DocumentBuilderFactroy抽象类。
DocumentBuilderFactroy documentBuilderFactroy = DocumentBuilderFactroy.neInstance ();
当我在eclipse中本地运行应用程序时,一切正常。但在部署模式下,我有以下错误:
javax.xml.parsers.DocumentBuilderFactory的提供者不能 创建
所以我通过指定实现类改变了在代码中实例化documentBuilderFactroy对象的方式。
String providerDBF = "com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl";
DocumentBuilderFactory builderFactory = DocumentBuilderFactory.newInstance (providerDBF, null);
我的问题是:如何在没有硬编码的情况下指定实现类来避免问题?
我没有使用Maven。
感谢。
答案 0 :(得分:0)
JavaDocs个州,可以在哪里设置:
此方法使用以下有序查找过程来确定 要加载的DocumentBuilderFactory实现类:
- 使用javax.xml.parsers.DocumentBuilderFactory系统属性。
- 使用JRE目录中的属性文件“lib / jaxp.properties”。此配置文件位于标准java.util.Properties中 format并包含实现的完全限定名称 密钥是上面定义的系统属性的类。该 jaxp.properties文件只能由JAXP实现读取一次 然后缓存它的值以供将来使用。如果该文件不存在 当第一次尝试从中读取时,不再进行尝试 是为了检查它的存在。无法改变 读取之后jaxp.properties中任何属性的值 第一次。
- 使用ServiceLoader类定义的服务提供者加载工具来尝试查找和加载实现 使用默认加载机制的服务: 服务提供者加载工具将使用当前线程 上下文类加载器尝试加载服务。如果是上下文 class loader为null,将使用系统类加载器。
- 否则,将返回系统默认实现。