目标机器没有连接到互联网,我不想使用固定位置加载它。
目标:要从jar加载DTD,jar将是一个依赖项。
答案 0 :(得分:1)
要从类路径加载任何文件(它是您所在的类所在的空间,通常是一堆罐子),您可以这样做:
InputStream is = this.getClass().getResourceAsStream("my/package/ResourceFile.dtd");
然后您可以在任意位置使用输入流。
注意: getResourceAsStream()使用加载类的类加载器加载资源。如果你正在申请任何一个应用程序中的类(因此由同一个类加载器加载你的jar)就可以了。
答案 1 :(得分:1)
没有标准方法可以提供DTD的本地缓存(如果我没记错的话,也可以是CATALOG)。
因此,您需要调查将使用本地副本的解析器,并使用其非标准配置API让它知道这些本地副本,以避免访问网络。
使用getResourceAsStream()方法从类路径中挑选条目。