java - 构建 Jar - 如何包含资源文件? IntelliJ 2017

标签 java intellij-idea build

只是为了澄清我对这个问题的立场:

  • 我使用绝对路径,因为如果没有它们,我的测试就会失败。
  • 我想我无法理解如何使用相对路径。
  • 作为最终结果,我想要一个运行时不依赖文件路径的 jar。

一直在寻找。找不到对我有用的解决方案...

我有一个文件夹格式:

src/main/java/packages/javafiles.java (there are several)
src/main/resources/Prolog_Files/fileIWantToLoad.pl

在我的代码中,我必须声明绝对路径:

String currentTheory = "src/main/resources/Prolog_Files/kb.pl";

并像这样加载它:

Theory theory = new Theory(new FileInputStream(currentTheory));

这样,当我运行 JavaFX 应用程序并运行测试时,它就可以完美运行。

但是,当我构建 Jar 时,出现错误:

Caused by: java.io.FileNotFoundException: src\main\resources\Prolog_Files\kb.pl (The system cannot find the path specified)

我已经做了很多搜索来了解如何使这项工作有效;我尝试过,但未能使用:

File currFile = new File(getClass().getClassLoader().getResource("/src/main/resources/Prolog_Files/kb.pl").getFile());

InputStream stream = getClass().getResourceAsStream("main/resources/Prolog_Files/kb.pl");

以及尝试将文件夹作为 IntelliJ 内部的资源包含在内,移动文件夹,尝试引用不带路径信息的 .pl 文件。

4 小时后,我的头发开始脱落 - 请帮忙!

编辑:补充一下,我没有使用 Maven、ANT 或类似的东西。我只是使用 IntelliJ 提供的任何东西。

谢谢!

最佳答案

您需要告诉 IntelliJ 您需要包含资源目录。

  1. 创建要添加外部资源的资源文件夹 Create Resource Folder

  2. 将其设为资源文件夹即可。 enter image description here

PS:我仍然建议您不要使用绝对路径,请告诉我是否可以帮助您用相对路径替换现有路径。

关于java - 构建 Jar - 如何包含资源文件? IntelliJ 2017,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43070390/

相关文章:

docker - docker多阶段构建期间的Gradle依赖项缓存?

android-studio - 在Android Studio中构建Gradle期间编辑代码

java - jgraphx 上划线顶点标签

java - ListView 中的错误

java - 让 IntelliJ 识别修改后的内部类方法

java - 如何设置 IntelliJ IDEA 默认文档字体大小?

gradle - 如何使用 Kotlin 在 Gradle 构建中设置 html5 javadoc 选项

java - 注册表错误 : JAVA 1. 7 而不是 1.6

java - Maven 多模块项目结构化问题

java - IntelliJ IDEA : Tomcat 8. 5.13 和 9.0.0.M19 — 工件部署期间出错。有关详细信息,请参阅服务器日志