我试图将android.jar包含到Java项目中,从Build Path中删除JRE并运行此代码.它抛出运行时异常.为什么?
Exception in thread "main" java.lang.RuntimeException: Stub!
at android.content.ContentValues.<init>(ContentValues.java:5)
at JarTest.main(JarTest.java:5)
public class JarTest {
public static void main(final String[] args) {
final ContentValues values = new ContentValues();
values.put("test", "test");
System.out.println(values);
}
}
Run Code Online (Sandbox Code Playgroud)
为什么ContentValues仅在Android环境中使用?
ant*_*oft 18
SDK中的android.jar只包含SDK类的存根实现,而不是设备(或模拟器)上的实际实现.jar只提供类元数据,以便引用SDK类的应用程序能够正确构建.
您无法创建任何引用将在Android设备外部运行的android.jar的项目.
@antlersoft解释说,android.jar只包含存根,足以让你构建你的项目.
Robolectric项目http://robolectric.org/允许您在不使用设备的情况下对Android代码运行测试.他们在Maven上有真正的构建版本http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.robolectric%22
我已经使用android-all工件成功运行了大部分Android后端代码.
在您的具体情况下可能没有帮助,因为一些API仍然java.lang.RuntimeException: Stub!不受限制,但对于大多数其他包含来自Robolectric的工件的情况应该有所帮助.