确定当前的虚拟机是Java SE还是Dalvik是否可能?

5
我希望实现一个类似于这样的东西:
if(isJavaVirtualMachine()){
    System.out.println("You are running on a JVM");
}else if(isDalvikVirtualMachine()){
    Log.i("env","You are running on an android.");
}

这个有可能吗?如果Java本身无法实现,我能通过JNI来实现吗?

2个回答

10

使用System.getProperty。Dalvik的属性名称在这里有文档记录。


2
正如ykaganovich所指出的那样,运行时区分纯Java和Android应该是相当容易的。 另一个问题是,在普通Java环境中,您将没有像Log这样的Android特定类,因此您在运行时会遇到问题! 一种可能的解决方案是使用反射组装平台特定的适配器,因此您只在运行时拉入依赖项(可能有些棘手)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接