没有找到libgdx: asset的可执行jar



我使用libgdx库创建了一个小游戏,并将其导出到一个可执行的jar中。在Eclipse中,游戏工作正常,但jar崩溃:

PS E:WorkspacesJavaGamesExecutable Jars> java -jar Pk2.jar
SetToNewScreen called
Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: Couldn't load file: img/player/player_16_down.png
    at com.badlogic.gdx.graphics.Pixmap.<init>(Pixmap.java:140)
    at com.badlogic.gdx.graphics.glutils.FileTextureData.prepare(FileTextureData.java:64)
    at com.badlogic.gdx.graphics.Texture.load(Texture.java:130)
    at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:121)
    at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:100)
    at com.badlogic.gdx.graphics.Texture.<init>(Texture.java:92)
    at org.hofrob.entities.Player.<init>(Player.java:29)
    at org.hofrob.screens.misc.Play.show(Play.java:121)
    at com.badlogic.gdx.Game.setScreen(Game.java:61)
    at org.hofrob.screens.Screenmanager.setToNewScreen(Screenmanager.java:63)
    at org.hofrob.pkgame.MyPkGame.create(MyPkGame.java:20)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication.mainLoop(LwjglApplication.java:136)
    at com.badlogic.gdx.backends.lwjgl.LwjglApplication$1.run(LwjglApplication.java:114)
Caused by: com.badlogic.gdx.utils.GdxRuntimeException: File not found: imgplayerplayer_16_down.png (Internal)
    at com.badlogic.gdx.files.FileHandle.read(FileHandle.java:136)
    at com.badlogic.gdx.files.FileHandle.readBytes(FileHandle.java:220)
    at com.badlogic.gdx.graphics.Pixmap.<init>(Pixmap.java:137)
    ... 12 more

问题行是:

private final Sprite player_down =
    new Sprite(new Texture("img/player/player_16_down.png"));

我按照libgdx wiki创建了jar。资产文件夹包含在构建路径中,资产文件夹的内容在导出的jar中:

    <
  • /com/gh>
  • /img
  • /javazoom
  • /META_INF
  • /
  • /org
  • /瓷砖

我也尝试使用Gdx.files.internal(也,删除final)

private final Sprite player_down = new Sprite(new Texture(Gdx.files.internal("img/player/player_16_down.png")));

但无差异

我能够导出基本项目,当一个新的gradle项目作为一个可执行的jar文件导入eclipse时,它就存在了(在执行jar文件时没有错误)。

类似的问题我发现有问题,资产文件夹不包括在jar中,这似乎不是一个问题在这里。

任何想法?

将assets文件夹中的所有内容放到jar所在的目录中。

我加载的资产有点不同,我的可执行jar文件运行良好。下面是我的Assets类:

public abstract class Assets {
private static AssetManager asm = new AssetManager();
private static String assetsPackPath = "assets.pack";
public static TextureAtlas atlas;
public static void load(){
    asm.load(assetsPackPath, TextureAtlas.class);
    asm.finishLoading();
    atlas = asm.get(assetsPackPath);
}
public static void dispose(){
    asm.dispose();
}
}

如果你没有使用纹理包装器,那么你应该使用!如有兴趣,请点击此处

我有同样的问题,你有一段时间前。我还使用Eclipse来生成我的jar文件,无论我做什么,当我运行jar文件时,这些文件都找不到。

解决方案

:

  • 首先在命令行中导航到项目目录

  • 执行gradlew desktop:dist命令

  • 生成的jar文件可以在desktop/build/libs中找到。

注意:我发现的另一个问题是,当您在Eclipse中运行项目时,它对文件扩展名不区分大小写。这意味着在Eclipse中,如果项目在代码中加载文件img.png,但实际上是img.PNG,则不会得到错误。但是,当您运行jar文件时,您将得到一个错误。我希望这个答案对你有所帮助,如果你有任何进一步的问题,请随时在下面发表评论!

相关内容

  • 没有找到相关文章

最新更新