java - 为什么我的 JAR 文件没有与其文件夹一起打包并读取它们?

标签 java image jar package embedded-resource

我已经遇到这个问题大约一年了,为什么当我将 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/

相关文章:

java - 将源文件包含在可运行的 jar 文件中

java - 如何从 matlab 代码运行 jar 文件?

JAVA:代替 break 语句?

Java - 此方法是多线程的吗?

java - 图像在处理中使用过多的 RAM

javascript - 在 Canvas 内的图像上绘制圆弧

java - thymeleaf 装订集

java - 为什么 Avalon-Framework 被关闭了?

php - 使用 PHP 上传、调整大小和裁剪图像中心

java - 如果 Manifest 中没有提及,如何查找 Jar 的版本