"Файл не найден" при запуске нового проекта LibGDX

Я пытаюсь изучить 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 идеально подходят...

Но безуспешно, я пытаюсь использовать Java 1.6 и 1.7, Всегда ту же ошибку (файл не найден, я сохранил Java 1.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();
    }
}

Странно, что путьLocal равен "". Нормально ли для Gdx.files.getLocalStoragePath() вернуть ничего (пустая строка)?

Так же

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

Работает отлично. только локальный дает ошибку, также isLocal и isExternal возвращает true.

И я стараюсь использовать множество комбинаций, например /assets/data/badlogic.jpg, /assets/badlogic.jpg, /data/badlogic.jpg, data/badlogic.jpg и badlogic.jpg.

Изображение badlogic.jpg есть, и я поставил его в нескольких местах, чтобы быть уверенным.

И теперь причина, по которой я здесь для помощи, я просто пытаюсь сделать один и тот же шаг на ПК, и все отлично работает.

Что не так с моим новым mac и настройкой?

Ответ 1

Из libgdx wiki

При запуске Desktop Project

Приложение не будет выполнено с первого раза. Откройте созданную конфигурацию запуска и установите рабочий каталог в каталог android/assets/.

связать свой рабочий стол с файлом Android-ресурсов?

Перейдите в Выполнить = > Запустить конфигурации.. = > выберите DesktopLauncher, вкладка "Аргументы" = > Рабочий каталог = > Другие затем перейдите к yourproject-android/assets/и нажмите Применить = > Выполнить

enter image description here

Ответ 2

Для тех из нас, кто использует Android Studio или IntelliJ IDEA, вам необходимо выполнить следующие действия:

  • Выберите "Выполнить" → "Изменить конфигурации" в меню

  • В текстовом поле "Рабочий каталог:" добавьте "/android/assets" в путь.

Обратите внимание, что если вы выполняете задачи с gradle, это не проблема. Файлы gradle.build настроены на использование папки активов из модуля android.

Ответ 3

Обратите внимание, что предыдущие ответы не будут работать для пользователей, которые не установили флажок "Android" при настройке. На самом деле должна быть установлена ​​папка с параметрами по умолчанию для тех, кто не заботится о развертывании для Android.

Ответ 4

Для тех, кто использует Intellij IDEA:

  • Выполнить → Изменить конфигурации
  • С левой стороны выберите: Приложение → DesktopLauncher
  • В "Конфигурации" -Tab, "Рабочий каталог" выберите свой путь android/assets.

Ответ 5

Я использую другое решение.

Вместо создания конфигурации запуска приложения создайте конфигурацию сборки Gradle. Задача desktop:run. После его запуска игра (должна) запускаться и оставаться в живых без сбоев, а ресурсы должны быть найдены.

Я не совсем уверен, почему, но когда задача Gradle выполняется так, ресурсы найдены. Когда используется конфигурация запуска приложения (без изменений, таких как принятый в настоящее время ответ), он выходит из строя, потому что он не может найти ресурсы.

Ответ 6

У меня нет Android-проекта. Мое решение состоит в том, чтобы добавить папку ресурса в Java Build Path- > Libraries в качестве папки класса. Кроме того, проверьте папку с ресурсами в Java Build Path- > Order and Export, чтобы включить ее в другие проекты.

Ответ 7

Вы можете проверить путь к активам в рабочем каталоге или связанных ресурсах. После проверки проверьте файл, который вы загружаете. Последний очистите и обновите проект и наслаждайтесь.

Ответ 8

Вот как вы исправляете это правильно, не играя с рабочим каталогом:

Проблема в том, что папка с resources неправильно помечена как каталог resources для сборки градиента. Чтобы исправить это, вы должны добавить следующую строку в ./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"
}