Yeni LibGDX projesi çalıştırırken "dosya bulunamadı"


115

LibGDX'i öğrenmeye çalışıyorum, burada listelenen tüm yazılımları yeni biçimlendirilmiş bir Mac OS X Maverick'e yeni bir Eclipse 4.3 ile kuruyorum .

Her şey sorunsuz gidiyor, yeniden başlatmanın ardından, gdx-setup.jar dosyasını indirip çalıştırıyorum, formu dolduruyorum ve Eclipse'e aktarıyorum.

Masaüstünü çalıştırmayı denediğimde hata yok, uyarı yok. (Masaüstü projesine sağ tıklayın, Farklı Çalıştır -> Java Uygulaması).

Bu hatayı aldım

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)

Burada benzer konuda bir sürü bulundu, ben buldum ... Dün gece hiç iyi sonuç alınamadan hepsini deneyin bu çok ben son Java 1.8, bir mac var soğutmak ve Eclipse mükemmel uyum ...

Ama başarı yok, Java 1.6 ve 1.7 ile deniyorum, Her zaman aynı hata (Dosya bulunamadı, Java 1.7'yi tuttum)

Bazı hata ayıklama yapmaya başladım, burada içe aktarma tarafından oluşturulan orijinal kodda tek değişikliğim.

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

Garip olan şey pathLocal eşittir "". Gdx.files.getLocalStoragePath () 'in hiçbir şey döndürmemesi normal midir (boş dize)?

Ayrıca

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

Harika çalışıyor. yalnızca yerel olan hata verir, ayrıca isLocal ve isExternal dönüş true.

Ve kombinasyonları gibi bir sürü deneyin /assets/data/badlogic.jpg, /assets/badlogic.jpg, /data/badlogic.jpg, data/badlogic.jpg, ve badlogic.jpg.

Badlogic.jpg görüntüsü orada ve emin olmak için birden çok yere koydum.

Ve şimdi yardım için burada olmamın nedeni, sadece aynı adımları bir bilgisayarda deniyorum ve her şey harika çalışıyor.

Yeni Mac'imin nesi var ve ayarlanıyor?


Bu garip ... varlıkları ekledikten sonra Eclipse'de android projesini yenilediniz mi? Çünkü android projesindeki varlık klasörüne yeni bir varlık ekleyip ardından Eclipse'de android projesini yenilemeyi unuttuğumda bu bana çok sık oluyor, görüntünün orada olmadığını söyleyen bir hata veriyor ...
florianbaethge

Yanıtlar:


230

Libgdx wiki'den

Desktop Project'i çalıştırdığınızda

Uygulama ilk seferinde başarısız olacaktır. Yeni oluşturduğunuz Çalıştırma Yapılandırmasını açın ve çalışma dizinini android / assets / dizinine ayarlayın!

masaüstü projenizi android varlıklar klasörüne bağlamak?

Çalıştır => Yapılandırmaları Çalıştır'a gidin .. => DesktopLauncher , Bağımsız Değişkenler Sekmesi => Çalışma Dizini => Diğerleri seçin, ardından projenize-android / assets / gidin ve Uygula => Çalıştır'a tıklayın

görüntü açıklamasını buraya girin


Ayrıca aynı sorunla ilgili diğerlerine yardımcı olmak için, aynı dizinin Android derlemesiyle çalışmasını sağlamak için, Android / varlıklar dizinine sağ tıklamamız ve Yerleşik yola tıklamamız ve Ekle'yi seçmemiz gerekir.
lebill

10
Bu benim için de yaptı. LibGDX'in bu sorunu en başından beri yaşaması ne kadar utanç verici - bu harika bir sistem, ancak bunun gibi şeyler geliştiricileri çok az sabırla korkutacak.
Richard

Müthiş! Bunu yapmayı açıklayan örnek projeye libgdx için görüntüyü bir metin alanıyla değiştirmek daha mantıklı olmaz mıydı? Sanırım basit bir Google araması zaten herkesi buraya getiriyor ama hiç de az değil, karşılaşılması tuhaf bir şey
Kai Qing

1
Android / varlıklar klasörünüz yoksa, masaüstü / varlıklar klasörünü aynı şekilde ayarlamak benim için çalıştı.
Fredrik Andersson

1
Lütfen bunun bir çözüm değil, geçici bir çözüm olduğunu unutmayın. Çoğu durumda işe yarayacak, ancak hepsinde değil. Örneğin, Masaüstü modülünden bir doku atlası oluşturmayı planlıyorsanız, varsayılan olarak Masaüstü modülüne göre olan yolları yeniden hesaplamanız gerekir.
Fran Marzoa

75

Android Studio veya IntelliJ IDEA kullananlar için şu adımları izlemeniz gerekir:

  1. Menüden Çalıştır -> Konfigürasyonları Düzenle'yi seçin

  2. "Çalışma Dizini:" metin kutusunda, yola "/ android / assets" ekleyin.

Gradle ile görevleri yürütürseniz, bunun bir sorun olmadığını unutmayın. Gradle.build dosyaları, android modülündeki varlıklar klasörünü kullanacak şekilde yapılandırılmıştır.


13

Kurulum sırasında "Android" kutusunun işaretini kaldıran kullanıcılar için önceki yanıtların çalışmayacağını unutmayın. Android için dağıtmayı umursamayanlar için kurulu bir varsayılan varlıklar klasörü gerçekten olmalı.


5
Doğru ve doğru, sadece karşılaştım; Masaüstü çalışma dizinini çekirdek içindeki varlıklar klasörüne ayarlamak benim için çalıştı.
naftalimich

@naftalimich Evet, bence varlıklar gerçekten merkezde olmalı. Android gradle eklentisi onları orada istediğinden ve her derleme / senkronizasyon sorunları ile uğraşan her şeyi kopyalamakla uğraşmak istemediklerinden, bunu neden yaptıklarını anlıyorum. Ancak bu gerçekten ele alınmalıdır.
EntangledLoops

11

Intellij IDEA kullananlar için:

  1. Çalıştır -> Konfigürasyonları Düzenle
  2. Sol tarafta şunları seçin: Uygulama -> DesktopLauncher
  3. "Yapılandırma" - Sekmesinde, "Çalışma dizini" altından android / varlık yolunuzu seçin

3
Şunlardan bahsedebilirsiniz: 1) Bu, önce bir masaüstü yapılandırması oluşturmanızı gerektirir. 2) Bu, orijinal projenizi oluştururken android'i seçtiğinizi varsayar. 3) Bu yanıt, IntelliJ IDE üzerine kurulu Android Studio için talimat olarak yukarıda Code-Apprentice tarafından sağlanmıştır.
EntangledLoops

6

Bu, çalışma dizini ile uğraşmadan düzgün bir şekilde düzeltmek için:

Sorun, varlık klasörünün resourcesgradle derlemesi için doğru bir dizin olarak işaretlenmemiş olmasıdır . Bunu düzeltmek için, ./core/build.gradleyapı dosyasına aşağıdaki satırı eklemelisiniz :

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

Son libGDX sürümüyle temiz bir kurulumdan sonra dosyam şöyle görünüyor:

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

Farklı bir çözüm kullanıyorum.

Bir uygulama çalıştırma yapılandırması oluşturmak yerine, bir Gradle derleme yapılandırması oluşturun. Görev desktop:run. Bir kez yürütüldüğünde, oyun başlatılmalı ve çökmeden hayatta kalmalı ve kaynaklar bulunmalıdır.

Neden olduğundan tam olarak emin değilim, ancak bir Gradle görevi bu şekilde çalıştırıldığında kaynaklar bulunur. Bir uygulama çalıştırma yapılandırması kullanıldığında (şu anda kabul edilen yanıt gibi değişiklikler olmadan), kaynakları bulamadığı için çöküyor.


0

Android projem yok. Benim çözümüm varlık klasörünü Java Derleme Yolu-> Kitaplıklar'a Sınıf Klasörü olarak eklemektir. Ek olarak, bunu diğer projelere dahil etmek için Java Derleme Yolu-> Sırala ve Dışa Aktar'daki varlık klasörünü kontrol edin.


0

Varlıkların yolunu çalışma dizininde veya bağlantılı kaynaklarda kontrol edebilirsiniz. Bitirdikten sonra yüklediğiniz dosyayı kontrol edin. Son olarak projeyi temizleyin ve yenileyin ve keyfini çıkarın.


0

IntelliJ'de de aynı sorunu yaşadım ve Android için libgdx projesini oluşturmadım (Android seçeneği işaretli olarak işaretlenmemişti) ve hala aynı hatayı alıyordum. Çalışma dizinini "/ android / assets /" dizinine bağlamak yerine, onu " / core / assets " ile ilişkilendirdi ve benim için iyi çalıştı.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.