【问题标题】:How to get gif resource from maven如何从maven获取gif资源
【发布时间】:2019-11-29 05:41:40
【问题描述】:

我正在制作一个 Discord 机器人。我已经通过 URL 嵌入了来自互联网的图像,现在我想使用本地保存的图像。

我的问题是我无法将 gif 的资源加载到 Java 应用程序中。

我尝试重命名它们,甚至更多地编辑 pom.xml,可惜没有结果。我尝试使用文件,但没有奏效。

File file = new File(Values.class.getClassLoader().getResource("first.gif").getFile());

System.out.println(file.exists());
System.out.println(file.getPath());

BufferedImage userThumbnailGIF = ImageIO.read(file); //this is Values.java:37

那是我试图从资源中获取文件的地方,这是我的 pom.xml:

<resources>
    <resource>
        <directory>${basedir}/src/main/resources</directory>
        <filtering>true</filtering>
        <excludes>
            <exclude>first.gif</exclude>
        </excludes>
    </resource>
    <resource>
        <directory>${basedir}/src/main/resources</directory>
        <filtering>false</filtering>
        <includes>
            <include>first.gif</include>
        </includes>
    </resource>
</resources>

文件的控制台输出是:

false
C:\Users\It%20is%20all%20ogre%20now\IdeaProjects\ToramBot\target\classes\first.gif
javax.imageio.IIOException: Can't read input file!
    at javax.imageio.ImageIO.read(ImageIO.java:1301)
    at com.github.zastrixarundell.torambot.Values.setImages(Values.java:37)
    at com.github.zastrixarundell.torambot.ToramBot.main(ToramBot.java:65)

注意:我的操作系统是 Windows。

当我手动导航到该目录时,该文件确实存在。

编辑:文件变量也不为空。

【问题讨论】:

  • 不要从File读它,而是从URL读它!

标签: java maven resources gif


【解决方案1】:

对!就是这样:

https://docs.oracle.com/javase/7/docs/api/javax/imageio/ImageIO.html#read(java.net.URL)

使用 Values.class.getClassLoader().getResource("first.gif") 并将其传递给 ImageIO.read()。您也可以将其包装到 InputStream 中。

【讨论】:

  • 嗯,最后,我只是把它当成一个InputStream!
猜你喜欢
  • 1970-01-01
  • 2016-09-18
  • 1970-01-01
  • 2015-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多