如何从maven获取gif资源

How to get gif resource from maven

我正在制作一个 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)

注:我的OS是Windows。

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

编辑: file 变量也不为空。

对了!就是这样:

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 中。