java - 如何从 .jar 文件中包含的 ZIP 文件加载图像?

标签 java image intellij-idea jar zip

我们正在编写一款游戏,该游戏可以从 .jar 文件启动。首先,我们在 IntelliJ 中创建一个项目,并使用以下代码从 ZIP 加载图像:

ZipFile zf = null;
try {
    zf = new ZipFile(zipPath);
    Image Image = ImageIO.read(zf.getInputStream(zf.getEntry("Block/Air.png")));
} catch (IOException ignored) {}

现在没有 ZIP(仅来自 .jar)的尝试是:

Image image=ImageIO.read(getClass().getResourceAsStream(path+ "Block/Air.png"));

它不加载任何纹理。您有更好的组合方法吗?

编辑:似乎不是问题。

最佳答案

由于 jar 是 zip 文件,您可以将它们放在 jar 文件中并将它们放在类路径中。

Image image=ImageIO.read(getClass().getResourceAsStream(path+ "Block/Air.png"); 

路径必须是源路径根的相对路径。例如。我在“src/main/resource/my/cool/game/”路径中有一个文件是“/my/cool/game”。

如果您想使用 zip 文件,它必须位于 jar 文件之外。要加载 zip,您可以使用相对文件路径,如果您从 Intellij 和 dekstop 启动游戏,该路径是相同的。

更改 intellij 中的工作目录 look here .

最好的方法是将 zip 文件放在 jar 旁边,这样您就可以使用“.”。作为加载 zip 文件的工作目录。

或者,您可以使用固定目录,但是您的游戏需要某种安装,以便它知道在哪里可以找到 zip 文件。

如果使用“.”,则 zip 文件需要位于项目目录的根目录中。

关于java - 如何从 .jar 文件中包含的 ZIP 文件加载图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31435463/

相关文章:

java - Grails:无法访问具有hasMany Relation的集合(无此类属性)

java - 如何在 IntelliJ IDEA 2018.2 中调试在 Docker 容器中运行的 Java 应用程序?

Binance API 的 Java 客户端在启动时加载大数据

java - 如何使用 Tomcat 高效地初始化大型静态数据表

jquery - 通过 jquery 克隆 img src 用作 div 背景

ios - 使用 EXIF/geotag 信息更新内存中的 iOS UIImage

java - 生成随机测试用例

java - JPA OneToMany MappedBy 关系

javascript - 在 Javascript 中比较同一图像的不同尺寸

java - 在 intellij 中运行测试时将属性传递给 Maven 配置文件