您好我最近将我的JavaFX8项目更改为Maven一切正常,除了加载位于JAR旁边的文件。这之前有效,但不再有。
文件夹结构:
要加载的图标位于/ target / icons中JAR文件位于/ target
中我读取文件的代码如下:
String applicationDir = (new File(".")).getAbsolutePath();
String iconsDir = applicationDir+"/target/icons/";
File[] files = new File(iconsDir).listFiles();
for (File file : files) {
if (file.getName().endsWith(".png")) {
System.out.println(file.getAbsolutePath());
Image img = new Image(file.getAbsolutePath());
ICONLIBRARY.put(file.getName().split("\\.")[0].toUpperCase(), img);
}
}
它进入循环并查找文件,但是当使用一个新的Image(file.getAbsolutePath())调用它时它会崩溃 无效的网址:无效的网址或资源未找到例外。
我尝试使用toExternalForm()等所有类型的东西,但没有任何帮助,无论我做什么,我仍然会得到例外。
我真的迷路了,也许你可以暗示我做错了什么。
提前致谢
ROBI
答案 0 :(得分:1)
解决方案是:
Image img = new Image(file.toURI().toString());
感谢您的帮助
有什么奇怪的,它与我在运行java -jar jarfile.jar的目录中有所不同,只有在同一个文件夹中执行此操作时才有效
答案 1 :(得分:0)
试试这个:
URL resource = YourClass.class.getResource("FILENAME");
Paths.get(resource.toURI()).toFile();
只要资源实际上是文件而不是JAR条目,这将找到任何资源。