【问题标题】:Maven Jar file read external imagesMaven Jar 文件读取外部图像
【发布时间】:2015-06-30 06:05:26
【问题描述】:

您好,我最近将我的 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);
        }

    }

它进入循环并找到文件,但是当 new Image(file.getAbsolutePath()) 被调用时它崩溃了 无效 URL:无效 URL 或找不到资源异常。

我用 toExternalForm() 等尝试了各种东西,但没有任何帮助,无论我做什么,我仍然得到异常。

我真的很迷茫,也许你可以给我一个提示我做错了什么。

提前致谢

罗比

【问题讨论】:

  • 您将这些图标放在源代码树的什么位置?
  • 您好,此图标位于 jar 文件旁边,这里是完整路径,例如:/Users/robi/git/projectxy/target/icons/icon_small.png jar 位于 /Users/robi/ git/projectxy/target/jarfile.jar 但正如我所说,查找文件的循环只是将文件名传递给图像失败

标签: java maven jar javafx


【解决方案1】:

试试这个:

URL resource = YourClass.class.getResource("FILENAME");
Paths.get(resource.toURI()).toFile();

只要资源实际上是文件而不是 JAR 条目,这将找到任何资源。

【讨论】:

  • 这只有在图标被打包成看起来不像的jar文件时才有效。
  • 没错,我想让它们分开,因为客户应该能够更改图标。
【解决方案2】:

嘿伙计们,我开始运行了!

解决办法是:

 Image  img = new Image(file.toURI().toString());

感谢大家的帮助

奇怪的是,它与我在哪个目录中运行 java -jar jarfile.jar 它只有在我在同一个文件夹中执行此操作时才有效

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-10-28
    • 2015-12-23
    • 2016-11-29
    • 1970-01-01
    • 2014-06-05
    • 1970-01-01
    • 1970-01-01
    • 2015-11-30
    相关资源
    最近更新 更多