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

时间:2017-03-28 13:04:17

标签: 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提供的任何东西。

谢谢!

1 个答案:

答案 0 :(得分:0)

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

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

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

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