5

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

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

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

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

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

线程“主”java.lang.RuntimeException 中的异常:存根!
在 android.content.Context.(Context.java:4)

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

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

4

3 回答 3

4

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

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

  1. 使用Run as Java Application运行该类。这会生成一个名为类的新运行配置
  2. 编辑新创建的运行配置
  3. 从Classpath选项卡中的Bootstrap Entries中删除Android
  4. 将JRE 6左右添加到项目的构建路径中
  5. 将此 JRE 添加到Classpath选项卡中的Bootstrap Entries
  6. 添加android.jar,它位于Classpath选项卡的User Entries中的Android SDK平台目录中
于 2012-06-05T13:09:28.147 回答
2

从 Android 的角度来看,Activity 非常重要,Activity 的生命周期是由操作系统在整个 Activity 生命周期中处理的少数方法的集合。

public void onCreate(Bundle savedBunldeInstance)

应用程序启动后立即调用创建活动。这是android中应用程序的入口点。您必须有模拟器或物理设备才能运行 Android 应用程序,这里的文件是compiled 2 times,一次由java compiler then by dalvik compiler.

DVM (Dalvik Virtual Machine)位于 Android 设备(EMULATOR 或 PHYSICAL)上,这就是我们需要模拟器或物理设备来运行它的原因。onCreate 是它的入口点。

根据您的要求,我正在编辑这篇文章并附上一条额外的信息。以下几行摘自http://developer.android.com/

 Android applications don't have a single entry point.
 (there's no main() function, for example).

更多详情请点击:

http://developer.android.com/guide/topics/fundamentals.html
于 2012-06-03T19:38:37.260 回答
0

main 方法不像 Java 那样是 Android 的入口点。你想覆盖

public void onCreate(Bundle savedBunldeInstance) method.
于 2012-06-03T07:55:42.757 回答