0

预期的机器没有连接到互联网,我不想使用固定位置加载它。

目标:要从 jar 加载 DTD,jar 将是一个依赖项。

4

2 回答 2

1

要从类路径加载任何文件(即类所在的空间,通常是一堆 jar),您可以执行以下操作:

InputStream is = this.getClass().getResourceAsStream("my/package/ResourceFile.dtd");

然后你可以在你想要的地方使用输入流。

注意: getResourceAsStream() 使用加载类的类加载器加载资源。如果您正在创建应用程序,则应用程序中的任何类(因此由同一个类加载器与您的 jar 加载)都可以。

于 2010-10-12T20:24:42.807 回答
1

没有提供 DTD 的本地缓存(如果我没记错的话,是 CATALOG)的标准方法。

因此,您将需要调查将使用本地副本的解析器,并使用其非标准配置 API 让它知道这些本地副本,从而避免访问网络。

使用 getResourceAsStream() 方法从类路径中挑选条目。

于 2010-10-12T20:25:49.723 回答