3

libgdx ライブラリを使用して小さなゲームを作成し、実行可能な jar にエクスポートしました。Eclipse では、ゲームは正常に動作しますが、jar は次のようにクラッシュします。

PS E:\Workspaces\JavaGames\Executable 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: img\player\player_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 を作成しました。assets フォルダーはビルド パスに含まれており、assets フォルダーの内容はエクスポートされた jar にあります。

  • /com
  • /img
  • /javaズーム
  • /META_INF
  • /ネット
  • /組織
  • /タイル
  • ...

私も使ってみました(また、 finalGdx.files.internalを削除します)

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

しかし、違いはありませんでした。

新しいgradleプロジェクトが実行可能なjarとしてEclipseにインポートされたときに存在する基本プロジェクトをエクスポートできます(jarの実行時にエラーは発生しません)。

私が見つけた同様の質問には、assets フォルダーが jar に含まれていないという問題がありましたが、ここでは問題ではないようです。

何か案は?

4

3 に答える 3

0

assets フォルダーのすべてのコンテンツを、jar と同じディレクトリに配置するだけです。

于 2014-08-24T21:02:25.707 に答える
0

アセットを少し違った方法でロードしましたが、実行可能な jar ファイルは問題なく動作します。ここに私の資産クラスがあります:

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();
}
}

テクスチャ パッカーを使用していない場合は、使用する必要があります。興味のある方はこちらをチェック

于 2014-08-24T21:08:51.877 に答える