我正在尝试在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中执行简单的应用程序?谢谢!
答案 0 :(得分:3)
Android应用程序的编译与Java应用程序不同。 Android应用程序被编译为.dex文件,常规Java应用程序被编译到jar文件中;两者都不接近彼此兼容。
目前在PC上运行Android应用程序最接近的是Android模拟器。
所以回答你的问题,不可能在Oracle的JVM中运行Android应用程序。