新しいLibGDXプロジェクトを実行すると「ファイルが見つかりません」


115

私はLibGDXを学習しようとしています。ここにリストさているすべてのソフトウェアを、新しいEclipse 4.3とともに、新しいフォーマットのMac OS X Maverick にインストールします。

すべてがスムーズに進み、再起動後、gdx-setup.jarをダウンロードして実行し、フォームに入力して、Eclipseにインポートします。

デスクトップを実行しようとしても、エラーや警告はありません。(デスクトッププロジェクトを右クリックし、[実行| Javaアプリケーション]をクリックします)。

このエラーが発生しました

Exception in thread "LWJGL Application" com.badlogic.gdx.utils.GdxRuntimeException: Couldn't load file: badlogic.jpg
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 com.diesel.bugs.DieselBugs.create(DieselBugs.java:21)
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: badlogic.jpg (Local)
at com.badlogic.gdx.files.FileHandle.read(FileHandle.java:134)
at com.badlogic.gdx.files.FileHandle.readBytes(FileHandle.java:218)
at com.badlogic.gdx.graphics.Pixmap.<init>(Pixmap.java:137)

私はここで多くの同様の問題を見つけました、私はそれらすべてを良い結果なしで試しました...昨夜これを見つけまし、非常にクールな最新のJava 1.8、Mac、およびEclipseが完全に適合しています...

しかし、成功しませんでした。Java1.6と1.7で試しましたが、常に同じエラーです(ファイルが見つかりません。Java1.7を使用しました)。

デバッグを開始します。ここで、インポートによって生成された元のコードの唯一の変更です。

package com.diesel.bugs;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;

public class DieselBugs extends ApplicationAdapter {
    SpriteBatch batch;
    Texture imgExternal,imgLocal;

    @Override
    public void create () {
        batch = new SpriteBatch();
        String pathLocal = Gdx.files.getLocalStoragePath();
        String pathExternal = Gdx.files.getExternalStoragePath();
        Boolean isExternal = Gdx.files.isExternalStorageAvailable();
        Boolean isLocal = Gdx.files.isLocalStorageAvailable();
        imgExternal = new Texture(Gdx.files.external("/Desktop/badlogic.jpg"));
        imgLocal = new Texture(Gdx.files.local("badlogic.jpg")); 
    }

    @Override
    public void render () {
        Gdx.gl.glClearColor(1, 0, 0, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        batch.begin();
        batch.draw(imgExternal, 0, 0);
        batch.end();
    }
}

奇妙なのは、pathLocalが ""に等しいことです。Gdx.files.getLocalStoragePath()が何も返さない(空の文字列)のは正常ですか?

また

imgExternal = new Texture(Gdx.files.external("/Desktop/badlogic.jpg"));

よく働く。ローカルのエラーのみがエラーを返し、isLocalとisExternalはtrueを返します。

そして、私は次のように、組み合わせの多くを試してみてください/assets/data/badlogic.jpg/assets/badlogic.jpg/data/badlogic.jpgdata/badlogic.jpg、とbadlogic.jpg

画像badlogic.jpgがあり、複数の場所に配置して確認します。

そして今、私が助けを求めている理由は、PCで同じ手順をすべて試すだけで、すべてがうまく機能するからです。

新しいMacとその設定の何が問題になっていますか?


奇妙です...アセットを追加した後、Eclipseでandroid-projectを更新しましたか?android-projectのasset-folderに新しいアセットを追加した後、Eclipseでandroidプロジェクトを更新するのを忘れると、多くの場合それが発生するため、画像がないというエラーが表示されます...
florianbaethge 14

回答:


230

libgdx wikiから

デスクトッププロジェクトを実行するとき

アプリケーションは最初に失敗します。作成した実行構成を開き、作業ディレクトリをandroid / assets /ディレクトリに設定します。

デスクトッププロジェクトをAndroidアセットフォルダーにリンクしますか?

実行 => 実行構成に移動します => DesktopLauncher、引数タブ=>作業ディレクトリ=>その他を選択し、yourproject-android / assets /を参照して、適用 => 実行をクリックします。

ここに画像の説明を入力してください


また、同じ問題で他の人を助けるために、Androidビルドで同じディレクトリを機能させるには、Android /アセットディレクトリを右クリックし、[ビルドされたパス]をクリックして追加することを選択する必要があります。
レビル

10
それは私にとってもそうでした。LibGDXが最初からこの問題を抱えているのはなんて残念なことです-それは素晴らしいシステムですが、そのようなことは、少しの忍耐力で開発者を怖がらせます。
リチャード

驚くばかり!libgdxが、これを説明するサンプルプロジェクトの画像をテキストフィールドに置き換える方が理にかなっているのではないでしょうか。簡単なグーグル検索がどうにかここにみんなを導いていると思いますが、それでもなお、それは遭遇するのは奇妙なことです
Kai Qing

1
android / assetsフォルダーがない場合は、desktop / assetsフォルダーを同じ方法で設定してください。
Fredrik Andersson

1
これは解決策ではなく、回避策であることに注意してください。ほとんどの状況で機能しますが、すべてでは機能しません。たとえば、Desktopモジュールからテクスチャアトラスを生成する場合は、パスを再計算する必要があります。デフォルトでは、Desktopモジュールに関連しています。
Fran Marzoa 16

75

Android StudioまたはIntelliJ IDEAを使用している場合は、次の手順に従う必要があります。

  1. メニューから「実行」->「構成の編集」を選択します。

  2. [Working Directory:]テキストボックスで、パスに「/ android / assets」を追加します。

gradleでタスクを実行する場合、これは問題ではないことに注意してください。gradle.buildファイルは、androidモジュールのアセットフォルダーを使用するように構成されています。


13

以前の回答は、セットアップ時に[Android]チェックボックスをオフにしたユーザーには機能しないことに注意してください。Androidへのデプロイを気にしない人のために、デフォルトのアセットフォルダーがインストールされているはずです。


5
正解、正解、ちょうどそれに遭遇しました。デスクトップの作業ディレクトリをコアのアセットフォルダーに設定するとうまくいきました。
naftalimich 2016年

@naftalimichええ、資産は本当にコアにあるべきだと思います。私は彼らがそれをした理由を理解しています、それはandroid gradleプラグインがそれらを望んでおり、各ビルドをすべてコピーして/同期の問題を処理したくないからです。しかし、これは本当に対処されるべきです。
EntangledLoops

11

Intellij IDEAを使用している場合:

  1. 実行->構成の編集
  2. 左側で次を選択します:アプリケーション-> DesktopLauncher
  3. 「構成」タブの「作業ディレクトリ」で、android / assetsパスを選択します

3
あなたは言及するかもしれません:1)これはあなたが最初にデスクトップ構成を作成することを要求します。2)これは、元のプロジェクトを生成するときにAndroidを選択したことを前提としています。3)この回答は、IntelliJ IDE上に構築されたAndroid Studioの指示として、上記のCode-Apprenticeによってすでに提供されています。
EntangledLoops 2016年

6

これは、作業ディレクトリをいじらずに正しく修正する方法です。

問題は、アセットフォルダーがresourcesgradleビルドのディレクトリとして正しくマークされていないことです。これを修正するには、./core/build.gradleビルドファイルに次の行を追加する必要があります。

sourceSets.main.resources.srcDirs = [ "assets/" ]

最新のlibGDXバージョンを使用したクリーンセットアップ後のファイルは次のようになります。

apply plugin: "java"

sourceCompatibility = 1.6
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'

sourceSets.main.java.srcDirs = [ "src/" ]
sourceSets.main.resources.srcDirs = [ "assets/" ]

eclipse.project {
    name = appName + "-core"
}

1

別のソリューションを使用しています。

アプリケーション実行構成を作成する代わりに、Gradleビルド構成を作成します。タスクはdesktop:runです。ゲームが実行されると、ゲームが起動してクラッシュすることなく存続し、リソースが見つかるはずです。

理由は正確にはわかりませんが、Gradleタスクをこのように実行すると、リソースが見つかります。アプリケーションの実行構成を使用すると(現在受け入れられている回答のような変更なしで)、リソースが見つからないためにクラッシュします。


0

私はAndroidプロジェクトを持っていません。私の解決策は、アセットフォルダーをクラスフォルダーとしてJavaビルドパス->ライブラリに追加することです。さらに、Java Build Path-> Order and Exportのアセットフォルダーをチェックして、これを他のプロジェクトに含めます。


0

作業ディレクトリまたはリンクされたリソースのアセットのパスを確認できます。完了したら、ロードするファイルを確認してください。最後に、プロジェクトをクリーンアップして更新してお楽しみください。


0

IntelliJでも同じ問題があり、Android用のlibgdxプロジェクトを生成していなかった(Androidオプションがチェック済みとしてマークされていなかった)ため、まだ同じエラーが発生していました。作業ディレクトリを「/ android / assets /」にリンクする代わりに、「/ core / assets」にリンクすると、私にとってはうまくいきました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.