是否可以确定当前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,因此在运行时会遇到问题!
一个可能的解决方案是使用反射组装特定于平台的适配器,因此您只能在运行时拉入依赖项(可能有点棘手)