java - 将外部文件(非 jar)包含到可执行 jar

标签 java jar executable-jar

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

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

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

我正在使用 IntellijIDEA,我可以将任何文件包含到我的最终 jar 中,但无法弄清楚将其放置在哪里。谢谢。

最佳答案

只需将文件放入项目的 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);    

关于java - 将外部文件(非 jar)包含到可执行 jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27777934/

相关文章:

java - 如何使 javadoc.jar 优先于 sources.jar 中的 javadoc?

java - Eclipse中Hadoop Mapreduce中的导入错误

java - 为什么我的 URI 不是分层的?

java - 创建 jar 文件的最简单方法?

java - 从字节到大无符号整数和字符串的转换

java - 在未实现的 Cloneable 类的对象上调用clone() 方法不会抛出 RuntimeException

java - Gradle Build - 任务 ':sonarqube' 的执行失败不能被索引两次

Java 泛型代码

java - 创建 2 个可运行的 JAR,它们使用相同的库而不需要它们两次

java - 无法以编程方式运行 TestNG(无法创建可执行 JAR)