web-dev-qa-db-fra.com

"Fichier non trouvé" lors de l'exécution d'un nouveau projet LibGDX

J'essaie d'apprendre LibGDX, j'installe tous les logiciels répertoriés ici avec un nouvel Eclipse 4.3 sur un nouveau Mac OS X Maverick formaté.

Tout se passe bien, après un redémarrage, je télécharge et exécute le fichier gdx-setup.jar, remplis le formulaire et l'importe dans Eclipse.

Aucune erreur, aucun avertissement lorsque j'essaie d'exécuter le bureau. (Faites un clic droit sur le projet de bureau, Exécuter en tant que -> Java)).

J'ai eu cette erreur

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)

J'ai trouvé pas mal de problèmes similaires ici, je les ai tous essayés sans aucun bon résultat ... La nuit dernière, j'ai trouvé this , très cool, j'ai le dernier Java 1.8 , un mac et Eclipse s’adaptent parfaitement ...

Mais sans succès, j'essaie avec Java 1.6 et 1.7, toujours la même erreur (Aucun fichier trouvé, j'ai gardé Java 1.7)

Je commence à faire du débogage, voici ma seule modification du code original généré par l'importation.

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

La chose étrange est pathLocal est égal à "". Est-il normal que Gdx.files.getLocalStoragePath () ne renvoie rien (chaîne vide)?

Également

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

Fonctionne très bien. seul le local donne l'erreur, isLocal également, et isExternal retournent true.

Et j'essaye beaucoup de combinaisons, comme /assets/data/badlogic.jpg, /assets/badlogic.jpg, /data/badlogic.jpg, data/badlogic.jpg, et badlogic.jpg.

L'image badlogic.jpg est là et je la mets à plusieurs endroits pour en être sûre.

Et maintenant, la raison pour laquelle je suis là pour vous aider, c’est que j’essaie de faire la même chose sur un PC et que tout fonctionne très bien.

Quel est le problème avec mon nouveau Mac et son réglage?

114
lebill

De libgdx wiki

Lorsque vous exécutez le projet de bureau

L'application échouera la première fois. Ouvrez la configuration d'exécution que vous venez de créer et définissez le répertoire de travail sur le répertoire Android/assets /!

liez votre projet de bureau à Android actifs?

Allez à Run => Run Configurations .. => choisissez DesktopLauncher, onglet Arguments => Répertoire de travail => Autres, puis accédez à yourproject-Android./assets/et cliquez Appliquer => Exécuter

enter image description here

230
Phonbopit

Pour ceux d'entre nous qui utilisent Android Studio ou IntelliJ IDEA, vous devez suivre ces étapes:

  1. Sélectionnez Exécuter -> Modifier les configurations dans le menu.

  2. Dans la zone de texte "Répertoire de travail:", ajoutez "/ Android/assets" au chemin.

Notez que si vous exécutez des tâches avec gradle, ce n'est pas un problème. Les fichiers gradle.build sont configurés pour utiliser le dossier des actifs à partir du module Android.

73
Code-Apprentice

Notez que les réponses précédentes ne fonctionneront pas pour les utilisateurs qui ont décoché la case "Android" lors de la configuration. Un dossier d'actifs par défaut devrait vraiment être installé pour ceux qui ne se soucient pas du déploiement pour Android.

13
EntangledLoops

Pour ceux qui utilisent Intellij IDEA:

  1. Exécuter -> Modifier les configurations
  2. Sur le côté gauche, sélectionnez: Application -> DesktopLauncher.
  3. Dans l'onglet "Configuration", sous "Répertoire de travail", choisissez votre chemin Android/assets
11
Sku Sku

Voici comment résoudre le problème correctement sans jouer avec le répertoire de travail:

Le problème est que le dossier d'actif n'est pas correctement marqué en tant que répertoire resources pour la construction du dégradé. Pour résoudre ce problème, vous devez ajouter la ligne suivante dans le ./core/build.gradle fichier de construction:

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

Mon fichier après une nouvelle installation avec la version récente de libGDX ressemble à ceci:

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"
}
5
Unchained

J'utilise une solution différente.

Au lieu de créer une configuration d'exécution d'application, créez une configuration de construction Gradle. La tâche est desktop:run. Une fois qu'il est exécuté, le jeu (devrait) se lancer et rester en vie sans planter, et les ressources doivent être trouvées.

Je ne sais pas exactement pourquoi, mais lorsqu'une tâche Gradle est exécutée de la sorte, les ressources sont trouvées. Lorsqu'une configuration d'exécution d'application est utilisée (sans modifications comme la réponse actuellement acceptée), elle se bloque car elle ne trouve pas les ressources.

1
Zoe

Vous pouvez vérifier le chemin des actifs dans le répertoire de travail ou dans les ressources liées. Une fois terminé, recherchez le fichier que vous chargez. Enfin, nettoyez et actualisez le projet et profitez-en.

0

J'ai eu le même problème dans IntelliJ, et je n'avais pas généré le projet libgdx pour Android (l'option Android n'était pas cochée) et j'avais toujours la même erreur. Au lieu de lier le travail répertoire vers "/ Android/assets /", lié à "/ core/assets" et cela a bien fonctionné pour moi.

0
Salek

Je n'ai pas Android projet. Ma solution consiste à ajouter le dossier d'actif au Java Chemin de construction-> Bibliothèques en tant que dossier de classe. De plus, vérifiez l'actif. dossier dans Java Chemin de construction-> Commander et exporter pour l'inclure dans d'autres projets.

0
Juanjo