我已经遇到这个问题大约一年了,为什么当我将 JAR 文件与 res 文件夹一起打包(比如游戏)时,它打包了该文件夹,但不读取它?我尝试将 res 文件夹单独作为一个包,并且尝试了各种方法来访问图像:
Toolkit.getDefaultToolkit().getImage("res/player.png");
Image player = new ImageIcon("res/player.png").getImage();
Image player = ImageIO.read(new File("res/player.png"));
但它们就是不起作用......我需要帮助,而且我不知道如何解决这个问题......
最佳答案
阅读所有这些方法的 javadoc。它们都以文件名作为参数。因此他们会在您的硬盘上查找文件 <current directory>/res/player.png
.
但是您的图像不是硬盘上的文件。它是 jar 文件中的资源。您希望以与加载此 jar 文件中的类相同的方式加载此资源:使用 ClassLoader。你需要的是
ImageIcon image = new ImageIcon(SomeClassOfYourApp.class.getResource("/res/player.png"));
或
ImageIcon image = new ImageIcon(getClass().getClassLoader().getResource("res/player.png"));
假设jar内文件的路径是/res/player.png
.
关于java - 为什么我的 JAR 文件没有与其文件夹一起打包并读取它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20596737/