HelloWorld无法在dalvikvm下运行

use*_*567 6 android dx android-source

我正在尝试https://android.googlesource.com/platform/dalvik/+/gingerbread/docs/hello-world.html上的Hello World示例

但是,我的Foo程序没有运行; dalvikvm抱怨如下:

Dalvik VM无法找到类'Foo'java.lang.NoClassDefFoundError:Foo at dalvik.system.NativeStart.main(Native Method)引起:java.lang.ClassNotFoundException:Foo in loader dalvik.system.PathClassLoader [/ mnt/sdcard /foo.jar]在java.lang.ClassLoader.loadClass(ClassLoader.java:532)的java.lang.ClassLoader.loadClass(ClassLoader.java:573)的dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243) ......还有1个

在dalvikvm调用期间,Logcat提供了更多信息:

D/dalvikvm(1361):创建instr宽度表E/dalvikvm(1361):无法打开dex缓存'/data/dalvik-cache/mnt@sdcard@foo.jar@classes.dex':没有这样的文件或目录I/dalvikvm(1361):无法为/mnt/sdcard/foo.jar打开或创建缓存(/ data /dalvik-cache/mnt@sdcard@foo.jar@classes.dex)W/dalvikvm(1361):threadid = 1:线程退出未捕获的异常(组= 0x4 001e9a8)

有没有人知道我做错了什么?

use*_*567 10

这篇文章的作者Andy McFadden给了我一个提示:

它正在尝试在/ data/dalvik-cache中创建一个.odex文件.您需要以root用户身份运行,或者拥有不受保护的/ data/dalvik-cache.

一旦我植根我的设备(例如使用SuperOneClick),它就有效了!


@domen的评论:你实际上不必是root.您可以设置ANDROID_DATA环境变量,它会将缓存放在那里.即mkdir /data/local/tmp/dalvik-cache,export ANDROID_DATA=/data/local/tmp.

  • 你实际上不必是root.您可以设置ANDROID_DATA环境变量,它会将缓存放在那里.即`mkdir/data/local/tmp/dalvik-cache`,`export ANDROID_DATA =/data/local/tmp`. (4认同)