将外部文件(不是jar)包含在可执行jar中

时间:2015-01-05 10:48:22

标签: java jar executable-jar

如果我将一些(例如* .txt)文件加载到我的java应用程序中,我怎么能将它包含到我的最终可执行jar中以使其可移植(意味着如果我将我的jar移动到另一台机器上它不是必需的用它移动这个* .txt文件)?

请注意,我不需要文件本身所需的文件内容。我应该如何从代码中写出这个文件的路径?

String path = "path/to/file/"; //Yeah it should be String

我使用的是IntellijIDEA,我可以将任何文件包含到我的最终jar中,但无法确定放置它的位置。感谢。

2 个答案:

答案 0 :(得分:2)

只需将文件放入项目的 src 文件夹即可 - 例如 src / resource / file.txt 。在构建项目时,整个 src 内容将放入生成的jar中。您可以使用以下代码访问您的文件:

this.getClass().getResource("/resource/file.txt");    

阅读所有行的示例:

URL url = this.getClass().getResource("/resource/file.txt");
Path path = Paths.get(url.toURI());
List<String> lines = Files.readAllLines(path, StandardCharsets.UTF_8);    

答案 1 :(得分:0)

您需要类似下面的内容

<target name="somejar" depends="compile">
      <jar jarfile="${somejar.jar}">
        <fileset dir="${bin.dir}">
          <include name="**/*.class"/>
        </fileset>
        <zipgroupfileset dir="lib" includes="*.jar"/>
        <fileset dir="${basedir}">
          <include name="config/*.properties"/>
          <include name="config/*.txt"/>
        </fileset>
      </jar>
    </target>

这将把所有需要的类和属性文件放在一起。您可以从项目基础编码文件的位置,直到到达文件。