是否可以在JVM中运行Android应用程序?

时间:2011-10-09 02:26:24

标签: java android

我正在尝试在Android应用上运行符号测试以收集一些信息,例如执行树。因此,我想在JVM而不是模拟器中运行它,因为Java应用程序有许多现有的符号测试工具。

我尝试运行HelloAndroid,这是一个示例应用程序,在TextView上输出“Hello Android”

java -cp ./ -cp $ANDROID_LIB/android.jar HelloAndroid.class

其中HelloAndroid.class在转换为.dex之前编译为Java类。但是JVM一直在抱怨

Exception in thread "main" java.lang.NoClassDefFoundError: HelloAndroid/class
Caused by: java.lang.ClassNotFoundException: HelloAndroid.class

我很困惑,因为我已经指定了HelloAndroid类。并且源代码中没有复杂的语句或调用Android库:

package com.example.helloandroid;

import android.app.Activity;
import android.os.Bundle;
    import android.widget.TextView;

public class HelloAndroid extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        TextView tv = new TextView(this);
        tv.setText("Hello, Android");
        setContentView(tv);
    }   
}

我是Android的新手,我正在努力让这个小应用程序在JVM中执行。所以,请你给我一些建议吗?我想知道我是否正确的方式,我的意思是尝试在JVM中执行简单的应用程序?谢谢!

1 个答案:

答案 0 :(得分:3)

Android应用程序的编译与Java应用程序不同。 Android应用程序被编译为.dex文件,常规Java应用程序被编译到jar文件中;两者都不接近彼此兼容。

目前在PC上运行Android应用程序最接近的是Android模拟器。

所以回答你的问题,不可能在Oracle的JVM中运行Android应用程序。