Maven Jar文件读取外部图像

时间:2015-04-22 14:01:42

标签: java maven jar javafx

您好我最近将我的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

2 个答案:

答案 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条目,这将找到任何资源。