HelloWorld无法在dalvikvm下运行

时间:2011-05-27 01:40:04

标签: android android-source dx

我正在尝试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)           at 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)

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

2 个答案:

答案 0 :(得分:10)

文章的作者安迪麦克法登给我一个提示:

  

它正在尝试在/ data / dalvik-cache中创建一个.odex文件。你会   需要以root身份运行,或者不受保护   /数据/达尔维克缓存。

一旦我植入设备(例如使用SuperOneClick),它就可以了!


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

答案 1 :(得分:0)

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