我正在尝试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)
有没有人知道我做错了什么?
答案 0 :(得分:10)
文章的作者安迪麦克法登给我一个提示:
它正在尝试在/ data / dalvik-cache中创建一个.odex文件。你会 需要以root身份运行,或者不受保护 /数据/达尔维克缓存。
一旦我植入设备(例如使用SuperOneClick),它就可以了!
@domen的评论:你实际上不必是root用户。您可以设置ANDROID_DATA环境变量,它会将缓存放在那里。即mkdir /data/local/tmp/dalvik-cache
,export ANDROID_DATA=/data/local/tmp
。
答案 1 :(得分:0)
您似乎正在尝试将其作为SD卡中的jar文件运行。您需要使用这些工具将其构建为apk文件。这将从Java字节码转换为Dalvik代码,并重新组织文件的内容。