6

我正在尝试来自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] 在 dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:573) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:532) ... 1 更多

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

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)

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

4

2 回答 2

10

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

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

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


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

于 2011-05-27T16:26:07.857 回答
0

似乎您正在尝试将其作为 sdcard 中的 jar 文件运行。您需要使用工具将其构建为 apk 文件。这会将 Java 字节码转换为 Dalvik 码,并重新组织文件的内容。

于 2011-05-27T01:44:59.280 回答