当前位置: 首页 > 知识库问答 >
问题:

Maven Jar文件读取外部图像

易俊驰
2023-03-14

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

    }

它进入循环并查找文件,但当新图像(file.getAbsoltePath())被调用时,它会崩溃。

我尝试了toExternalForm()等的各种方法,但都没有效果,无论我做什么,我都会遇到例外。

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

提前谢谢

罗比

共有2个答案

赏星河
2023-03-14

试试这个:

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

只要资源实际上是一个文件而不是一个JAR条目,它就会找到任何资源。

金瑞
2023-03-14

嘿伙计们我让它跑起来了!

解决办法是:

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

谢谢你的帮助

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

 类似资料:
  • 问题内容: 我们为我们的一个应用程序提供了一个连接池组件(JAR文件)。截至目前,应用程序连接详细信息捆绑在JAR文件中(在文件中)。 我们可以使其更通用吗?我们可以让客户端告诉属性文件详细信息(路径和文件名),然后使用JAR来获得连接吗? 客户端代码中包含以下内容是否有意义: 与此同时,客户端将指定(以某种方式???)属性文件详细信息,其中包含要连接的URL,超时等。 问题答案: http://

  • 我想用mod在屏幕上显示一些东西,为此我想在测试中写下“helloworld”。txt(稍后将是json)并将其保存在某处(?)在我的minecraft文件夹中,所以我不需要重新编译我的mod来获得这些数据; 从我的mod读取此文件并将其显示在屏幕上的正确方法是什么?我正在使用MCreator,只有慢慢开始编码“自定义元素”,你可以称我为java编程的新手 我的想法是: (MCreator生成的代

  • 我正在尝试运行应用程序jar并将应用程序配置(application.yml)外部化。有几个文件是从application.yml.引用的 应用程序运行命令: 目录结构: 以Kafka图书馆试图访问文件为例。 我尝试通过以下方式配置路径 application.yml 当库试图访问这些文件时,我得到以下错误。 原因:java.io.FileNotFoundException:类路径资源[keyst

  • 每个人都知道如果我们想要读取属性文件,我们可以这样做: 但是,现在我有了一个类似于SpringBoot的框架。它可以将Spring与Mybatis集成在一起。 问题是前面的代码只能读取我的项目类路径文件,但我需要使用我的框架读取project属性文件。我是怎么做的?

  • 问题内容: 有谁知道如何在Maven中读取文件。我知道有多种方法可以使用资源过滤来读取属性文件并从中设置值,但是我想要在中使用以下方法: 问题答案: 试用 Properties Maven插件

  • 问题内容: 我已经在本地系统中保存了一个JSON文件并创建了一个JavaScript文件,以便读取JSON文件并打印出数据。这是JSON文件: 假设这是JSON文件的路径:。 有人能帮我写一个简单的代码来读取JSON文件并以JavaScript打印数据吗? 问题答案: 由于使用HTTP发出请求,因此您 无法 对本地资源进行AJAX调用。 一种解决方法是运行本地Web服务器,提供文件并对localh