1

我有一个 jar 文件,比如archive1.jar,位于/home/ext/libs中。这有几个类,还有一个位于 jar 层次结构根目录的文本文件 ( data.txt )。这个 jar 的一个类(比如Data.java)读取文件以启动一些内部数据结构。

现在,archive1.jar 作为另一个程序的库包含在内,称为Parsing,它在完全不同的目录/home/progs中执行(archive1.jar 在程序执行命令的类路径中指定)。

我面临的问题是,现在 Data.java 无法再理解 data.txt 的路径,因为它假定 data.txt 位于/home/progs而不是/home/ext/libs的 archive1.jar 中。

我的问题是我应该在Data.java中进行哪些更改,以便它了解data.txt在archive1.jar 中?总之,如何让Data.java能够读取archive1.jar里面的data.txt,不管调用程序在哪里。

注意:在作为文件的线程Java 资源中,情况有点不同,并且对于如何读取 jar 中的文件也没有答案。有人说这可能是不可能的。

4

1 回答 1

2

访问档案内资源文件的方法JAR是使用getClass().getResourceAsStream(). 使用它可确保从存档而不是文件系统加载资源。例如,如果您在存档data.txt中的同一位置,那么您可以通过这种方式访问Data.javaJARdata.txt

InputStream is=getClass().getResourceAsStream("data.txt");

获得InputStream资源后,请按照您喜欢的方式进行。

于 2013-06-19T02:01:44.903 回答