“File tidak ditemukan” saat menjalankan proyek LibGDX baru


115

Saya mencoba mempelajari LibGDX, saya menginstal semua perangkat lunak yang tercantum di sini dengan Eclipse 4.3 baru di mac OS X Maverick yang diformat baru.

Semuanya berjalan lancar, setelah reboot, saya unduh, dan jalankan gdx-setup.jar, isi formulir, dan impor ke Eclipse.

Tidak ada kesalahan, tidak ada peringatan, ketika saya mencoba menjalankan desktop. (Klik kanan proyek desktop, Run As -> Java Application).

Saya mendapat kesalahan ini

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)

Saya menemukan banyak masalah serupa di sini, saya mencoba semuanya tanpa hasil yang bagus ... Tadi malam saya menemukan ini , sangat keren saya memiliki Java 1.8 terbaru, mac, dan Eclipse yang sangat cocok ...

Tapi tidak berhasil, saya coba dengan Java 1.6 dan 1.7, Selalu error yang sama (Tidak ada file yang ditemukan, saya simpan Java 1.7)

Saya mulai melakukan debug, di sini satu-satunya modifikasi saya dari kode asli yang dihasilkan oleh pengimporan.

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

Yang aneh adalah pathLocal sama dengan "". Apakah normal jika Gdx.files.getLocalStoragePath () tidak menampilkan apa pun (string kosong)?

Juga

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

Bekerja dengan baik. hanya yang lokal yang memberikan kesalahan, juga isLocal, dan isExternal return benar.

Dan saya mencoba banyak kombinasi, seperti /assets/data/badlogic.jpg, /assets/badlogic.jpg, /data/badlogic.jpg, data/badlogic.jpg, dan badlogic.jpg.

Gambar badlogic.jpg ada di sana dan saya taruh di banyak tempat untuk memastikannya.

Dan sekarang alasan mengapa saya di sini untuk meminta bantuan adalah saya hanya mencoba semua langkah yang sama di PC dan semuanya berfungsi dengan baik.

Apa yang salah dengan Mac baru saya dan pengaturannya?


Aneh ... apakah Anda menyegarkan proyek android di Eclipse setelah menambahkan aset? Karena itu sering terjadi pada saya ketika saya menambahkan aset baru ke folder aset di proyek-android dan kemudian lupa menyegarkan proyek android di Eclipse, itu akan memberi saya kesalahan yang mengatakan bahwa gambar tidak ada ...
florianbaethge

Jawaban:


230

Dari libgdx wiki

Saat Anda menjalankan Proyek Desktop

Aplikasi akan gagal pertama kali. Buka Run Configuration yang baru saja Anda buat dan setel direktori kerja ke direktori android / assets /!

tautkan proyek desktop Anda ke folder aset android?

Pergi ke Run => Run Configurations .. => pilih DesktopLauncher , Arguments Tab => Working Directory => Others lalu telusuri proyek-android / assets / dan klik Apply => Run

masukkan deskripsi gambar di sini


juga untuk membantu orang lain dengan masalah yang sama, untuk membuat direktori yang sama berfungsi dengan Android build, kita perlu mengklik kanan pada direktori Android / assets dan Klik pada Built path dan pilih Add it.
lebill

10
Itu juga berlaku untuk saya. Sayang sekali LibGDX memiliki masalah ini sejak awal-- ini adalah sistem yang hebat, tetapi hal-hal seperti itu akan menakuti para developer dengan sedikit kesabaran.
Richard

Hebat! Bukankah lebih masuk akal jika libgdx mengganti gambar dengan bidang teks ke proyek sampel yang menjelaskan untuk melakukan ini? Saya kira pencarian google sederhana membawa semua orang ke sini tapi tidak kurang, itu adalah hal yang aneh untuk ditemui
Kai Qing

1
Jika Anda tidak memiliki folder android / assets, mengatur folder desktop / assets dengan cara yang sama berhasil untuk saya.
Fredrik Andersson

1
Harap perhatikan bahwa ini bukan solusi tetapi solusi. Ini akan berhasil di banyak situasi, tetapi tidak di semua situasi. Misalnya, jika Anda berencana membuat atlas tekstur dari modul Desktop, Anda harus menghitung ulang jalurnya, yang secara default bersifat relatif terhadap modul Desktop.
Fran Marzoa

75

Bagi kita yang menggunakan Android Studio atau IntelliJ IDEA, Anda perlu mengikuti langkah-langkah berikut:

  1. Pilih Run -> Edit Configurations dari menu

  2. Di kotak teks "Direktori Kerja:", tambahkan "/ android / assets" ke jalur.

Perhatikan bahwa jika Anda menjalankan tugas dengan gradle, ini bukan masalah. File gradle.build dikonfigurasi untuk menggunakan folder assets dari modul android.


13

Perhatikan bahwa jawaban sebelumnya tidak akan berfungsi untuk pengguna yang tidak mencentang kotak "Android" saat penyiapan. Harus benar-benar ada folder aset default yang dipasang untuk mereka yang tidak peduli tentang penerapan untuk Android.


5
Benar dan benar, temui saja; mengatur direktori kerja Desktop ke folder aset di inti bekerja untuk saya.
naftalimich

@naftalimich Ya, menurut saya aset harus benar-benar menjadi inti. Saya mengerti mengapa mereka melakukannya, karena plugin gradle android menginginkan mereka ada di sana dan mereka tidak ingin berurusan dengan semua penyalinan setiap membangun / menangani masalah sinkronisasi. Tapi ini harus benar-benar ditangani.
EntangledLoops

11

Bagi mereka yang menggunakan Intellij IDEA:

  1. Jalankan -> Edit Konfigurasi
  2. Di sisi kiri pilih: Application -> DesktopLauncher
  3. Di tab "Konfigurasi", lakukan "Direktori kerja" pilih jalur android / assets Anda

3
Anda mungkin menyebutkan: 1) Ini mengharuskan Anda untuk membuat konfigurasi desktop terlebih dahulu. 2) Ini mengasumsikan Anda memilih android saat membuat proyek asli Anda. 3) Jawaban ini sudah disediakan oleh Code-Apprentice di atas sebagai petunjuk untuk Android Studio, yang dibangun di atas IntelliJ IDE.
EntangledLoops

6

Beginilah cara Anda memperbaikinya dengan benar tanpa bermain-main dengan direktori kerja:

Masalahnya adalah folder aset tidak ditandai dengan benar sebagai resourcesdirektori untuk build gradle. Untuk memperbaikinya, Anda harus menambahkan baris berikut di ./core/build.gradlefile build:

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

File saya setelah penyiapan bersih dengan versi libGDX terbaru terlihat seperti ini:

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

Saya menggunakan solusi yang berbeda.

Daripada membuat konfigurasi proses aplikasi, buat konfigurasi build Gradle. Tugasnya adalahdesktop:run . Setelah dijalankan, game (harus) diluncurkan dan tetap hidup tanpa crash, dan sumber daya harus ditemukan.

Saya tidak begitu yakin mengapa, tetapi ketika tugas Gradle dijalankan seperti ini, sumber daya akan ditemukan. Ketika konfigurasi menjalankan aplikasi digunakan (tanpa modifikasi seperti jawaban yang diterima saat ini) itu macet karena tidak dapat menemukan sumber daya.


0

Saya belum memiliki proyek Android. Solusi saya adalah menambahkan folder aset ke Java Build Path-> Libraries as a Class Folder. Selain itu, periksa folder aset di Java Build Path-> Order and Export untuk memasukkan ini ke dalam proyek lain.


0

Anda dapat memeriksa jalur Aset di Direktori kerja atau sumber daya terkait. Setelah selesai, periksa file yang Anda muat. Terakhir bersihkan dan segarkan proyek dan nikmati.


0

Saya memiliki masalah yang sama di IntelliJ, dan saya belum membuat proyek libgdx untuk Android (opsi Android tidak ditandai sebagai dicentang) dan saya masih mendapatkan kesalahan yang sama. Alih-alih menautkan direktori kerja ke "/ android / assets /", tautkan ke " / core / assets " dan ini berfungsi dengan baik untuk saya.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.