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

标签 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 中执行简单的应用程序?谢谢!

最佳答案

Android 应用程序的编译方式与 Java 应用程序不同。 Android 应用程序被编译为 .dex 文件,而常规 Java 应用程序被编译为 jar 文件;两者都无法相互兼容。

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

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

关于java - 是否可以在 JVM 中运行 Android 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7701047/

相关文章:

java - RxJava Observable 和 Subscriber 用于跳过异常?

java - Google Drive java 从控制台获取信息

java - 添加 FirebaseAuth.getInstance 后应用崩溃

java - java中用simplexml反序列化xml

android - Kotlin - 使用属性访问语法问题

java - Spring - 从集合或映射创建 bean

java - 如何在eclipse中使用ant进行预处理

java - 如何让CDI根据bean的泛型类型决定使用的实现

java - 无法在 Android App 中实例化类

C# 将字符串编码结构发送至 C 库