Beim Versuch, LibGDX zu lernen, installiere ich die gesamte hier aufgeführte Software mit einem neuen Eclipse 4.3 auf einem frisch formatierten Mac OS X Maverick.
Alles läuft reibungslos, nach einem Neustart lade ich die Datei gdx-setup.jar herunter und führe sie aus, fülle das Formular aus und importiere sie in Eclipse.
Kein Fehler, keine Warnung, wenn ich versuche, den Desktop auszuführen. (Klicken Sie mit der rechten Maustaste auf das Desktop-Projekt, Ausführen als -> Java-Anwendung).
Ich habe diesen Fehler bekommen
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)
Ich habe hier eine Menge ähnlicher Probleme gefunden, ich probiere sie alle ohne gutes Ergebnis aus ... Letzte Nacht fand ich das sehr cool. Ich habe das neueste Java 1.8, einen Mac und Eclipse, die perfekt passen ...
Aber kein Erfolg, ich versuche es mit Java 1.6 und 1.7, immer der gleiche Fehler (Keine Datei gefunden, ich habe Java 1.7 behalten)
Ich beginne ein Debugging, hier meine einzige Änderung des ursprünglichen Codes, der durch den Import generiert wurde.
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();
}
}
Das Seltsame ist, dass pathLocal gleich "" ist. Ist es normal, dass Gdx.files.getLocalStoragePath () nichts zurückgibt (leere Zeichenfolge)?
Auch der
imgExternal = new Texture(Gdx.files.external("/Desktop/badlogic.jpg"));
Funktioniert super. Nur der lokale gibt den Fehler aus, auch isLocal und isExternal geben true zurück.
Und ich versuche , eine Menge Kombinationen, wie /assets/data/badlogic.jpg
, /assets/badlogic.jpg
, /data/badlogic.jpg
, data/badlogic.jpg
, und badlogic.jpg
.
Das Bild badlogic.jpg ist da und ich habe es an mehreren Stellen platziert, um sicherzugehen.
Und jetzt bin ich hier, um Hilfe zu bekommen, weil ich einfach den gleichen Schritt auf einem PC versuche und alles großartig funktioniert.
Was ist los mit meinem neuen Mac und seiner Einstellung?
Antworten:
Aus dem libgdx-Wiki
Wenn Sie Desktop Project ausführen
Ihr Desktop-Projekt mit dem Android-Assets-Ordner verknüpfen?
Gehen Sie zu Ausführen => Konfigurationen ausführen .. => Wählen Sie DesktopLauncher , Registerkarte Argumente => Arbeitsverzeichnis => Andere, navigieren Sie dann zu Ihrem Projekt-Android / Assets / und klicken Sie auf Übernehmen => Ausführen
quelle
Für diejenigen von uns, die Android Studio oder IntelliJ IDEA verwenden, müssen Sie die folgenden Schritte ausführen:
Wählen Sie im Menü Ausführen -> Konfigurationen bearbeiten
Fügen Sie im Textfeld "Arbeitsverzeichnis:" "/ android / assets" an den Pfad an.
Beachten Sie, dass dies kein Problem darstellt, wenn Sie Aufgaben mit gradle ausführen. Die gradle.build-Dateien sind so konfiguriert, dass sie den Assets-Ordner des Android-Moduls verwenden.
quelle
Beachten Sie, dass die vorherigen Antworten nicht für Benutzer funktionieren, die das Kontrollkästchen "Android" beim Setup deaktiviert haben. Es sollte wirklich ein Standard-Assets-Ordner für diejenigen installiert sein, die sich nicht für die Bereitstellung für Android interessieren.
quelle
Für diejenigen, die Intellij IDEA verwenden:
quelle
So beheben Sie es richtig, ohne mit dem Arbeitsverzeichnis herumzuspielen:
Das Problem ist, dass der Asset-Ordner nicht korrekt als
resources
Verzeichnis für den Gradle-Build markiert ist . Um dies zu beheben, müssen Sie der./core/build.gradle
Build-Datei die folgende Zeile hinzufügen :Meine Datei nach einem sauberen Setup mit der aktuellen libGDX-Version sieht folgendermaßen aus:
quelle
Ich benutze eine andere Lösung.
Erstellen Sie anstelle einer Anwendungslaufkonfiguration eine Gradle-Buildkonfiguration. Die Aufgabe ist
desktop:run
. Sobald es ausgeführt wird, sollte das Spiel gestartet werden und am Leben bleiben, ohne abzustürzen, und die Ressourcen sollten gefunden werden.Ich bin mir nicht ganz sicher, warum, aber wenn eine Gradle-Aufgabe wie diese ausgeführt wird, werden die Ressourcen gefunden. Wenn eine Anwendungslaufkonfiguration verwendet wird (ohne Änderungen wie die aktuell akzeptierte Antwort), stürzt sie ab, weil die Ressourcen nicht gefunden werden können.
quelle
Ich habe kein Android-Projekt. Meine Lösung besteht darin, den Asset-Ordner als Klassenordner zum Java Build Path-> Libraries hinzuzufügen. Überprüfen Sie außerdem den Asset-Ordner unter Java Build Path-> Order and Export, um ihn in andere Projekte aufzunehmen.
quelle
Sie können den Pfad der Assets im Arbeitsverzeichnis oder in verknüpften Ressourcen überprüfen. Überprüfen Sie anschließend die Datei, die Sie laden. Bereinigen und aktualisieren Sie das Projekt zuletzt und genießen Sie es.
quelle
Ich hatte das gleiche Problem in IntelliJ und das libgdx-Projekt für Android nicht generiert (die Android-Option wurde nicht als aktiviert markiert), und es wurde immer noch der gleiche Fehler angezeigt. Anstatt das Arbeitsverzeichnis mit "/ android / assets /" zu verknüpfen, verknüpfte es mit " / core / assets " und es funktionierte gut für mich.
quelle