如何运行Android Activity类的main方法?

rmo*_*stl 5 java android

我想通过在我创建的Activity的public static void main(String [] args)方法中执行它来检查Android Activity的私有方法.

我使用Eclipse ADT和我作为Java应用程序运行Activity的天真方法导致:

Java运行时环境检测到致命错误:
内部错误(classFileParser.cpp:3174),pid = 2936,tid = 2980
错误:ShouldNotReachHere()

所以我查看了运行配置,发现Android 3.1ClasspathBootstrap Entries部分中的唯一条目.我设法配置项目的构建路径,以便JRE也在Bootstrap条目中.然后我删除了Android 3.1条目并将android.jar添加到用户条目.

执行运行配置的结果是RuntimeException:

线程"main"中的异常java.lang.RuntimeException:Stub!
在android.content.Context.(Context.java:4)

执行某些测试的另一种方法是启动JUnit测试.但是在私有方法的情况下,这很麻烦.

有没有办法成功运行Android Activity类的main方法?

rmo*_*stl 4

对于当前的问题还有另一种选择,如果该private方法(应通过执行主方法进行检查)可以提取到另一个类。这当然意味着至少手段突然变得protected

但是,如果该方法是在不是派生自android.app.Activity 的类中定义的,则可以定义main方法。您只需调整Eclipse 中的运行配置即可。

  1. 使用Run as Java Application运行该类。这会生成一个新的运行配置,其名称类似于该类
  2. 编辑新创建的运行配置
  3. 从Classpath选项卡的Bootstrap Entries中删除Android
  4. 将JRE 6左右添加到项目的构建路径中
  5. 将此 JRE 添加到“类路径”选项卡中的“引导程序条目”
  6. 添加android.jar,它位于Classpath选项卡的User EntriesAndroid SDKplatforms目录中