2015-11-05 5 views
1

я следующий кусок кода, чтобы обнаружить, если мое приложение работает на 64-битной платформе:обнаруживая Java VM архитектуры на ОС Windows 10

public static boolean is64BitVM() { 
    String bits = System.getProperty("sun.arch.data.model", "?"); 
    logger.debug(String.format("sun.arch.data.model=%s", bits)); 
    if (bits.equals("64")) { 
    return true; 
    } 
    String java_vm_name = System.getProperty("java.vm.name"); 
    logger.debug(String.format("java.vm.name=%s", java_vm_name));  

    String os_arch = System.getProperty("os.arch"); 
    logger.debug(String.format("os.arch=%s", os_arch)); 

    if (bits.equals("?")) { 
    // probably sun.arch.data.model isn't available 
    // maybe not a Sun JVM? 
    // try with the vm.name property 
    return java_vm_name.toLowerCase().indexOf("64") >= 0; 
    } 
    // probably 32bit 
    return false; 
} 

Раньше хорошо работать на Windows 7, но после обновления до ОС Windows 10 те же кусок кода начал сообщать 32bit архитектуру:

2015-11-05 17:53:15,429 DEBUG [javawsApplicationMain] sun.arch.data.model=32 
2015-11-05 17:53:15,431 DEBUG [javawsApplicationMain] java.vm.name=Java HotSpot(TM) Client VM 
2015-11-05 17:53:15,431 DEBUG [javawsApplicationMain] os.arch=x86 

что странно, что он сообщает 32bit архитектуры при запуске через JWS, но когда я запускаю его на место в моем IDE я получаю должный результат (64 -немного). Кажется, это еще одна проблема с моделью безопасности Windows 10. Любые мысли?

+0

Вы уверены, что используете одну и ту же виртуальную машину? У вас есть несколько установленных? – Doon

+0

У вас есть 32-битный или 64-битный JDK/JRE? – Rustam

+0

Какая версия jdk или jre? – Marged

ответ

0

Решение, которое работало, состояло в том, чтобы удалить 32-разрядную версию, а затем установить последнюю 64-разрядную Java. Сначала я установил Java 8, но я не мог заставить запускать JWS-приложение (даже добавление самозаверяющего сертификата на исключения, а также URL-адрес из файла .jnlp не помогло). В конце концов установил последнюю версию Java 7, и это сделало трюк.