只是为了澄清我对这个问题的立场:
- 我使用绝对路径,因为如果没有它们,我的测试就会失败。
- 我想我无法理解如何使用相对路径。
- 作为最终结果,我想要一个运行时不依赖文件路径的 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 提供的任何东西。
谢谢!
最佳答案
关于java - 构建 Jar - 如何包含资源文件? IntelliJ 2017,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43070390/