2011-05-27 5 views
6

J'essaie l'exemple Bonjour tout le monde de https://android.googlesource.com/platform/dalvik/+/gingerbread/docs/hello-world.htmlHelloWorld ne peut pas fonctionner sous dalvikvm

Cependant, mon programme de Foo n'a pas fonctionné; dalvikvm se plaignait de ce qui suit:

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 a donné plus d'informations lors de l'appel de 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)

Est-ce que quelqu'un sait ce que là-bas je fait de mal?

Répondre

10

L'auteur de l'article, Andy McFadden, donnez-moi un conseil:

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.

Une fois que je mon appareil clouée (par exemple en utilisant SuperOneClick), il a travaillé!


Commentaire de @domen: Vous n'avez pas besoin d'être root. Vous pouvez définir la variable d'environnement ANDROID_DATA et y mettra le cache. C'est à dire. mkdir /data/local/tmp/dalvik-cache, export ANDROID_DATA=/data/local/tmp.

+4

Vous n'avez pas besoin d'être root. Vous pouvez définir la variable d'environnement ANDROID_DATA et y mettra le cache. C'est à dire. 'mkdir/data/local/tmp/dalvik-cache',' exporter ANDROID_DATA =/data/local/tmp'. – domen

0

Il semble que vous essayez de l'exécuter en tant que fichier jar à partir de la carte SD. Vous devez utiliser les outils pour le créer en tant que fichier apk. Cela convertit des codes bytes Java en codes Dalvik, et réorganise le contenu du fichier.

+0

Si je ne me trompe pas, le dalvikvm d'Android peut autoriser l'exécution du fichier dex converti que j'ai jar, en suivant l'exemple Hello World dans le lien que j'ai fourni. Donc, cela ne devrait pas être la raison. – user761567

+0

Hm. Je viens de courir cet exemple. J'ai dû déplacer le fichier .class dans le répertoire platform-tools pour que dx le trouve (sur une machine Windows). Mais à part ça, pas de problèmes. Il semble que votre fichier .jar soit corrompu en quelque sorte. –

+0

Salut Ted, merci d'avoir essayé de m'aider ici ... Je souhaite savoir si c'est mon fichier jar qui est problématique, ou est-ce mon appareil Android (Creative Ziio 8). Pouvez-vous m'envoyer votre adresse email à [email protected] afin que je puisse vous envoyer mon fichier jar afin que vous puissiez tester pour moi? En outre, quelle application d'émulation de terminal utilisez-vous pour accéder à la ligne de commande Android? – user761567

Questions connexes