【问题标题】:HelloWorld cannot run under dalvikvmHelloWorld 无法在 dalvikvm 下运行
【发布时间】:2011-09-03 01:40:21
【问题描述】:

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

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

Dalvik VM 无法找到类 'Foo' java.lang.NoClassDefFoundError: Foo 在 dalvik.system.NativeStart.main(本机方法) 引起: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)

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

【问题讨论】:

    标签: android android-source dx


    【解决方案1】:

    文章作者 Andy McFadden 给我一个提示:

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

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


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

    【讨论】:

    • 您实际上不必是 root。您可以设置 ANDROID_DATA 环境变量,它会将缓存放在那里。 IE。 mkdir /data/local/tmp/dalvik-cache, export ANDROID_DATA=/data/local/tmp.
    【解决方案2】:

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

    【讨论】:

    • 如果我没记错的话,Android 的 dalvikvm 可以按照我提供的链接中的 Hello World 示例,允许执行我拥有 JAR 的转换后的 dex 文件。所以这不应该是原因。
    • 嗯。我刚刚运行了那个例子。我不得不将 .class 文件移动到平台工具目录中,以便 dx 找到它(在 Windows 机器上)。但除此之外,没有任何问题。听起来您的 .jar 文件以某种方式损坏了。
    • 嗨 Ted,感谢您在这里帮助我...我想确定是我的 jar 文件有问题,还是我的 android 设备 (Creative Ziio 8)。你能把你的电子邮件地址发给我 stephenchan@pmail.ntu.edu.sg,这样我就可以把我的 jar 文件发给你,这样你就可以为我测试了?另外,您使用什么终端仿真应用程序来访问 android 命令行?
    • 我只是打开一个命令提示符并运行adb shell。这给了我在模拟器上的 shell 会话。它也适用于真实设备。 (正在发送电子邮件。)
    • 我明白了。当您之前说它有效时,您是否在真实设备上尝试过?我在真机上得到了上述结果。
    猜你喜欢
    • 2020-06-18
    • 2015-10-08
    • 1970-01-01
    • 2012-07-22
    • 1970-01-01
    • 2016-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多