Estou tentando aprender LibGDX, instalo todos os softwares listados aqui com um novo Eclipse 4.3 em um mac OS X Maverick formatado.
Tudo corre bem, após uma reinicialização, faço o download e executo o gdx-setup.jar, preencho o formulário e importo para o Eclipse.
Nenhum erro, nenhum aviso, quando tento executar a área de trabalho. (Clique com o botão direito no projeto da área de trabalho, Executar como -> Aplicativo Java).
Eu entendi esse erro
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)
Encontrei muitos problemas semelhantes aqui, experimentei todos sem nenhum resultado bom ... Ontem à noite achei isso , muito legal, tenho o Java 1.8 mais recente, um mac e o Eclipse se encaixam perfeitamente ...
Mas sem sucesso, tento com Java 1.6 e 1.7, sempre o mesmo erro (nenhum arquivo encontrado, mantive o Java 1.7)
Começo a fazer alguns debug, aqui minha única modificação do código original gerado pela importação.
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();
}
}
O estranho é que pathLocal é igual a "". É normal que Gdx.files.getLocalStoragePath () não retorne nada (string vazia)?
Também o
imgExternal = new Texture(Gdx.files.external("/Desktop/badlogic.jpg"));
Funciona bem. apenas o local dá o erro, também isLocal, e isExternal retorna true.
E eu tento um monte de combinações, como /assets/data/badlogic.jpg
, /assets/badlogic.jpg
, /data/badlogic.jpg
, data/badlogic.jpg
, e badlogic.jpg
.
A imagem badlogic.jpg está lá e eu a coloquei em vários lugares para ter certeza.
E agora o motivo pelo qual estou aqui para obter ajuda é que tentei tudo da mesma forma em um PC e tudo funcionou muito bem.
O que há de errado com meu novo mac e sua configuração?
Respostas:
Do wiki libgdx
Quando você executa o Desktop Project
vincular seu projeto de desktop à pasta de ativos do Android?
Vá para Executar => Executar Configurações .. => escolha DesktopLauncher , Guia Argumentos => Diretório de Trabalho => Outros e navegue para yourproject-android / assets / e clique em Aplicar => Executar
fonte
Para aqueles de nós que usam o Android Studio ou IntelliJ IDEA, você precisa seguir estas etapas:
Selecione Executar -> Editar Configurações no menu
Na caixa de texto "Working Directory:", acrescente "/ android / assets" ao caminho.
Observe que, se você executar tarefas com o gradle, isso não será um problema. Os arquivos gradle.build são configurados para usar a pasta de ativos do módulo Android.
fonte
Observe que as respostas anteriores não funcionarão para usuários que desmarcaram a caixa "Android" na configuração. Realmente deve haver uma pasta de ativos padrão instalada para aqueles que não se importam com a implantação para Android.
fonte
Para aqueles que usam Intellij IDEA:
fonte
É assim que você o corrige adequadamente sem brincar com o diretório de trabalho:
O problema é que a pasta de ativos não está marcada corretamente como
resources
diretório para a compilação do Gradle. Para corrigir isso, você deve adicionar a seguinte linha no./core/build.gradle
arquivo de compilação:Meu arquivo após uma configuração limpa com a versão libGDX recente tem esta aparência:
fonte
Eu uso uma solução diferente.
Em vez de criar uma configuração de execução de aplicativo, crie uma configuração de compilação do Gradle. A tarefa é
desktop:run
. Uma vez executado, o jogo (deve) iniciar e permanecer vivo sem travar, e os recursos devem ser encontrados.Não sei exatamente por que, mas quando uma tarefa do Gradle é executada assim, os recursos são encontrados. Quando uma configuração de execução de aplicativo é usada (sem modificações como a resposta atualmente aceita), ele trava porque não consegue encontrar os recursos.
fonte
Não tenho projeto Android. Minha solução é adicionar a pasta de ativos ao Java Build Path-> Libraries as a Class Folder. Além disso, verifique a pasta de ativos em Java Build Path-> Order and Export para incluí-la em outros projetos.
fonte
Você pode verificar o caminho dos Ativos no diretório de trabalho ou recursos vinculados. Depois de concluir, verifique o arquivo que está carregando. Na última vez, limpe e atualize o projeto e aproveite.
fonte
Tive o mesmo problema no IntelliJ e não gerei o projeto libgdx para Android (a opção Android não estava marcada como marcada) e ainda estava recebendo o mesmo erro. Em vez de vincular o diretório de trabalho a "/ android / assets /", vincule-o a " / core / assets " e funcionou bem para mim.
fonte