"Archivo no encontrado" cuando se ejecuta un nuevo proyecto LibGDX
libgdx android (7)
Estoy tratando de aprender libgdx, instalo todo el software que se muestra here con un nuevo Eclipse 4.3 en un nuevo mac formateado Maverick.
Todo va bien, después de reiniciar, descargo y ejecuto gdx-setup.jar, llene el formulario e importalo a Eclipse.
Sin error, sin advertencia, cuando intento ejecutar el escritorio. (Haga clic con el botón derecho en el proyecto del escritorio, Ejecutar como -> Aplicación Java).
Recibí este error
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)
He encontrado un montón de problemas similares aquí, los pruebo a todos sin ningún buen resultado ... Anoche encontré this , muy bueno, tengo el último java 1.8, un Mac y Eclipse encajan perfectamente ...
Pero no tuve éxito, lo intento con Java 1.6 y 1.7, siempre con el mismo error (guardé Java 1.7)
Empiezo a depurar, aquí mi única modificación del código original generado por la importación.
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();
}
}
lo raro es que PathLocal es igual "" ¿Es normal que Gdx.files.getLocalStoragePath () no devuelva nada (cadena vacía)?
También el
imgExternal = new Texture(Gdx.files.external("/Desktop/badlogic.jpg"));
funciona bien solo el local da el error, también isLocal e isExternal return true.
Y pruebo una gran cantidad de combinaciones /assets/data/badlogic.jpg, /assets/badlogic.jpg, /data/badlogic.jpg, data / badlogic.jpg, badlogic.jpg.
La imagen badlogic.jpg está ahí y la puse en varios lugares para estar seguro ...
Y ahora, la razón por la que estoy aquí por ayuda es que intente todo el mismo paso en una PC y todo funciona muy bien.
¿Qué pasa con mi nuevo mac y su configuración?
Gracias por todas sus sugerencias
Cuenta
Desde libgdx wiki
Cuando ejecuta Desktop Project
La aplicación fallará la primera vez. Abra la Configuración de ejecución que acaba de crear y establezca el directorio de trabajo en el directorio android / assets /!
vincular su proyecto de escritorio a la carpeta de activos de Android?
Vaya a Ejecutar => Ejecutar Configuraciones .. => elija Desktop Launcher , pestaña Arguments => Working Directory => Others luego busque suproyecto-android / assets / y haga clic en Aplicar => Ejecutar
No tengo un proyecto Android. Mi solución es agregar la carpeta de activos a la ruta de compilación de Java-> Bibliotecas como carpeta de clase. Además, verifique la carpeta de activos en Java Build Path-> Order and Export para incluir esto en otros proyectos.
Para aquellos de nosotros que usamos Android Studio o IntelliJ IDEA, debes seguir estos pasos:
Seleccione Ejecutar -> Editar configuraciones en el menú
En el cuadro de texto "Directorio de trabajo:", agregue "/ android / assets" a la ruta.
Tenga en cuenta que si ejecuta tareas con gradle, esto no es un problema. Los archivos gradle.build están configurados para usar la carpeta de activos desde el módulo de Android.
Para aquellos que usan Intellij IDEA:
- Ejecutar -> Editar configuraciones
- En el lado izquierdo, seleccione: Aplicación -> DesktopLauncher
- En la "Configuración" -Tab, bajo "Directorio de trabajo", elija su ruta de Android / activos
Puede verificar la ruta de los Activos en el Directorio de trabajo o en los recursos vinculados. Después de hacer la verificación, compruebe el archivo que está cargando. Por último, limpie y actualice el proyecto y disfrute.
Tenga en cuenta que las respuestas anteriores no funcionarán para los usuarios que desactivaron la casilla "Android" en la configuración. Realmente debería haber una carpeta de activos predeterminados instalada para aquellos a quienes no les importa desplegar para Android.
Yo uso una solución diferente.
En lugar de crear una configuración de ejecución de aplicaciones, cree una configuración de compilación de Gradle. La tarea es de desktop:run
. Una vez que se ejecuta, el juego (debería) iniciarse y mantenerse vivo sin fallar, y los recursos deben ser encontrados.
No estoy exactamente seguro de por qué, pero cuando una tarea de Gradle se ejecuta así, se encuentran los recursos. Cuando se utiliza una configuración de ejecución de la aplicación (sin modificaciones como la respuesta aceptada actualmente) se bloquea porque no puede encontrar los recursos.