2011-05-27 9 views
6

Estoy intentando el ejemplo de Hello World https://android.googlesource.com/platform/dalvik/+/gingerbread/docs/hello-world.htmlHelloWorld no puede ejecutarse bajo dalvikvm

Sin embargo, mi programa Foo no se ha ejecutado; dalvikvm se quejó de lo siguiente:

Dalvik VM unable to locate class 'Foo' java.lang.NoClassDefFoundError: Foo at dalvik.system.NativeStart.main(Native Method) Caused by: java.lang.ClassNotFoundException: Foo in loader dalvik.system.PathClassLoader[/mnt/sdcard/foo.jar] at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243) at java.lang.ClassLoader.loadClass(ClassLoader.java:573) at java.lang.ClassLoader.loadClass(ClassLoader.java:532) ... 1 more

Logcat dieron más información durante la invocación dalvikvm:

D/dalvikvm(1361): creating instr width table E/dalvikvm(1361): Can't open dex cache '/data/dalvik-cache/[email protected]@[email protected]': No such file or directory I/dalvikvm(1361): Unable to open or create cache for /mnt/sdcard/foo.jar (/data /dalvik-cache/[email protected]@[email protected]) W/dalvikvm(1361): threadid=1: thread exiting with uncaught exception (group=0x4 001e9a8)

¿Alguien por ahí sabe lo que hice mal?

Respuesta

10

El autor del artículo, Andy McFadden, dame un consejo:

It's trying to create a .odex file in /data/dalvik-cache. You'll need to be running as root, or have an unprotected /data/dalvik-cache.

Una vez clavado mi dispositivo (por ejemplo, usando SuperOneClick), funcionó!


Comentario por @domen: Usted realmente no tiene que ser root. Puede establecer la variable de entorno ANDROID_DATA y allí colocará el caché. Es decir. mkdir /data/local/tmp/dalvik-cache, export ANDROID_DATA=/data/local/tmp.

+4

En realidad, no tiene que ser root. Puede establecer la variable de entorno ANDROID_DATA y allí colocará el caché. Es decir. 'mkdir/data/local/tmp/dalvik-cache',' export ANDROID_DATA =/data/local/tmp'. – domen

0

Parece que está intentando ejecutarlo como un archivo jar desde la tarjeta sd. Necesita usar las herramientas para compilarlo como un archivo apk. Esto convierte códigos de byte de Java a códigos Dalvik y reorganiza el contenido del archivo.

+0

Si no me equivoco, el dalvikvm de Android puede permitir la ejecución del archivo dex convertido que he guardado, siguiendo el ejemplo de Hello World en el enlace que he proporcionado. Entonces esta no debería ser la razón. – user761567

+0

Hm. Acabo de ejecutar ese ejemplo. Tuve que mover el archivo .class al directorio de herramientas de plataforma para que dx lo encuentre (en una máquina con Windows). Pero aparte de eso, no hay problemas. Parece que tu archivo .jar está corrupto de alguna manera. –

+0

Hola Ted, gracias por tratar de ayudarme aquí ... Me gustaría saber si es mi archivo jar problemático o si es mi dispositivo Android (Creative Zio 8). ¿Puede enviarme su dirección de correo electrónico a [email protected] para que pueda enviarle mi archivo jar para que pueda hacer una prueba en mi nombre? Además, ¿qué aplicación de emulación de terminal está utilizando para acceder a la línea de comandos de Android? – user761567

Cuestiones relacionadas