0

作为 Android 系统研究和测试的一部分,我目前正在尝试覆盖 SDK 中的 Android 库(特别是 android.database.sqlite)。我正在关注使用 Emma 的指南,希望将 Emma 用作覆盖工具。但是,仅仅遵循本指南并运行示例程序似乎并不能很好地工作。我可以跑

java -cp out Main

很好,但在我尝试跑步的那一刻

java emmarun -cp out Main

它给了我以下错误:

Exception in thread "main" java.lang.NoClassDefFoundError: emmarun
Caused by: java.lang.ClassNotFoundException: emmarun
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Could not find the main class: emmarun.  Program will exit.

也许这只是我对艾玛问题缺乏经验,但谁能向我解释我应该如何做到这一点?顺便说一下,我有emma.jar文件当前保存在/usr/lib/jvm/java-1.6.0-sun-1.6.0.33.x86_64/jre/lib/(指南说放在jre/lib /ext/,但这不起作用,所以我工作的支持将它放在 lib/ 中)。

4

1 回答 1

0

也许你使用了错误的emma.jar

android的构建系统中有2个emma.jar

一个用于主机在 PC 上运行),另一个用于目标在电话上运行)。

您的问题是使用目标执行emmarun命令。


在 /system/framework/emma.jar 下构建的一个是用于手机的。

构建系统 /external/emma/lib/emma.jar 中的一个用于执行命令。

于 2013-06-03T01:13:33.353 回答