Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否可以确定当前VM是JavaSE还是Dalvik?_Java_Android - Fatal编程技术网

是否可以确定当前VM是JavaSE还是Dalvik?

是否可以确定当前VM是JavaSE还是Dalvik?,java,android,Java,Android,我希望实现如下内容: 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吗?使用System.getProperty。Dalvik的属性名已被记录在案正如y

我希望实现如下内容:

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吗?

使用
System.getProperty
。Dalvik的属性名已被记录在案

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