2011-10-09 129 views
1

我正試圖在Android應用程序上運行符號測試來收集一些信息,例如執行樹。因此我想在JVM而不是模擬器中運行它,因爲Java應用程序中有很多現有的符號測試工具。是否可以在JVM中運行Android應用程序?

我試圖通過

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

其中HelloAndroid.class被轉換成.DEX之前編譯的Java類運行HelloAndroid這是一個示例應用程序上的TextView輸出「你好Android」的。但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中執行簡單的應用程序?謝謝!

回答

3

Android應用程序的編譯方式與Java應用程序相同。 Android應用程序被編譯爲.dex文件,其中常規Java應用程序被編譯爲jar文件;兩者在任何地方都不會相互兼容。

在PC上運行Android應用程序最接近的東西是Android模擬器。

所以要回答你的問題,不可能在Oracle的JVM中運行Android應用程序。

相關問題