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


115

Я намагаюся вивчити LibGDX, я встановлюю все програмне забезпечення, перераховане тут, з новим Eclipse 4.3 на свіжий відформатований mac OS X Maverick.

Все проходить гладко, після перезавантаження я завантажую і виконую gdx-setup.jar, заповнюю форму та імпортую в Eclipse.

Ніяких помилок, без попередження, коли я намагаюся запустити робочий стіл. (Клацніть правою кнопкою миші проект на робочому столі, запустити як -> Java Application).

Я отримав цю помилку

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

Дивна річ: pathLocal дорівнює "". Чи нормально Gdx.files.getLocalStoragePath () нічого не повертати (порожній рядок)?

Також

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

Чудово працює. лише локальна дає помилку, також є локальною, і isEternal external return true.

І я спробувати багато комбінацій, як /assets/data/badlogic.jpg, /assets/badlogic.jpg, /data/badlogic.jpg, data/badlogic.jpg, і badlogic.jpg.

Зображення badlogic.jpg є, і я розміщую його в декількох місцях, щоб бути впевненим.

І тепер причиною, чому я тут за допомогою, я просто спробую все той же крок на ПК і все чудово працює.

Що не так з моїм новим mac та його налаштуванням?


Це дивно ... Ви оновили проект Android на Eclipse після додавання активів? Оскільки це трапляється зі мною дуже багато, коли я додаю новий актив у папку активів в проекті Android, а потім забуду оновити проект Android в Eclipse, це призведе до помилки, сказавши, що зображення там немає ...
florianbaethge

Відповіді:


230

З вікі libgdx

Під час запуску Desktop Project

Додаток вийде з ладу з першого разу. Відкрийте щойно створену конфігурацію запуску та встановіть робочий каталог на каталог android / tools /!

зв’язати проект на робочому столі з папкою активів Android?

Перейдіть до запуску => Запустити конфігурації .. => оберіть DesktopLauncher , вкладка Аргументи => Робочий каталог => Інші, потім перейдіть до свого проекту-android / properties / і натисніть Застосувати => Запустити

введіть тут опис зображення


щоб також допомогти іншим із тією ж проблемою, щоб той самий каталог працював зі збіркою Android, нам потрібно клацнути правою кнопкою миші на папці Android / активів та натиснути на Вбудований шлях і вибрати його додати.
лебілл

10
Це зробив і для мене. Як прикро, що LibGDX має цю проблему з самого початку - це чудова система, але такі речі відлякують дияволів з невеликим терпінням.
Річард

Дивовижно! Чи не було б більше сенсу для libgdx замінювати зображення текстовим полем на зразок проекту, що пояснює це? Я здогадуюсь, що простий пошук у Google все одно приводить усіх сюди, але тим не менше, це дивна річ
Кай Цін

1
Якщо у вас немає папки Android / активів, встановлення папки робочого столу / активів так само, як і для мене.
Фредрік Андерссон

1
Зверніть увагу, що це не рішення, а обхід. Він працюватиме в більшості обставин, але не у всіх. Наприклад, якщо ви плануєте генерувати атлас текстури з модуля Desktop, вам доведеться перерахувати шляхи, які за замовчуванням відносяться до модуля Desktop.
Fran Marzoa

75

Для тих, хто використовує Android Studio або IntelliJ IDEA, потрібно виконати наступні дії:

  1. У меню виберіть Запуск -> Редагувати конфігурації

  2. У текстовому полі "Робочий каталог:" додайте "/ android / tools" до шляху.

Зауважте, що якщо ви виконуєте завдання з Gradle, це не проблема. Файли gradle.build налаштовані на використання папки активів з модуля Android.


13

Зауважте, що попередні відповіді не працюватимуть для користувачів, які зняли прапорець "Android" під час налаштування. Справді має бути встановлена ​​папка активів за замовчуванням для тих, хто не переймається розгортанням для Android.


5
Правильно і правильно, просто наткнувся на нього; встановлення робочого каталогу Desktop до папки активів у ядрі працювало для мене.
нафталіміч

@naftalimich Так, я думаю, що активи дійсно повинні бути в основі. Я розумію, чому вони це зробили, оскільки плагін для android gradle хоче їх туди, і вони не хотіли займатися тим, що копіюють все, що складається з кожної збірки / з питаннями синхронізації. Але це справді слід вирішити.
EntangledLoops

11

Для тих, хто використовує Intellij IDEA:

  1. Виконати -> Редагувати конфігурації
  2. У лівій частині виберіть: Застосування -> DesktopLauncher
  3. У розділі "Конфігурація" -Tab, під пунктом "Робочий каталог" виберіть шлях для Android / активів

3
Ви можете згадати: 1) Для цього потрібно спочатку створити конфігурацію робочого столу. 2) Це передбачає, що ви вибрали Android під час генерації оригінального проекту. 3) Ця відповідь уже була надана Code-Apprentice вище як інструкція для Android Studio, яка побудована на IntelliJ IDE.
EntangledLoops

6

Ось як це правильно виправити, не граючи з робочим каталогом:

Проблема полягає в тому, що папка активів неправильно позначена як resourcesкаталог для складання gradle. Для виправлення цього потрібно додати наступний рядок у ./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 Build Path-> Libraries як Folder Class. Додатково перевірте папку ресурсів у Java Build Path-> Order and Export, щоб включити це до інших проектів.


0

Ви можете перевірити шлях активів у робочій Директорії або пов'язаних ресурсах. Після завершення перевірити файл, який ви завантажуєте. Останнім чином очистіть і оновіть проект та насолоджуйтесь.


0

У мене була така ж проблема в IntelliJ, і я не створив проект libgdx для Android (опція Android не позначена як перевірена), і я все-таки отримував ту саму помилку. Замість того, щоб посилати робочий каталог на "/ android / tools /", зв’язав його з " / core / активи ", і він працював нормально для мене.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.