Как Вы определяете архитектуру на 32 или 64 бита Windows с помощью Java?

Ой, я не знаю, я никогда несу чушь записанный код, который вызывает Переполнение стека;)

54
задан palacsint 8 January 2019 в 01:48
поделиться

4 ответа

​​Обратите внимание, что имущество os.arch даст вам архитектуру JRE , а не основной ОС.

Если вы устанавливаете 32-битный JRE на 64-битной системе, System.getProperty («os.arch») вернутся x86

, чтобы фактически определить основную архитектуру, Вам нужно будет написать какой-то родной код. Смотри Это пост для получения дополнительной информации (и ссылка на нативный код образца)

54
ответ дан 7 November 2019 в 07:49
поделиться
System.getProperty("os.arch");
-2
ответ дан 7 November 2019 в 07:49
поделиться

Вы можете использовать свойство os.arch в свойствах системы, чтобы узнать.

Properties pr = System.getProperties();
System.out.println(pr.getProperty("os.arch"));

Если вы используете 32-битную версию, она должна показать i386 или что-то в этом роде

-5
ответ дан 7 November 2019 в 07:49
поделиться

Я не совсем доверяю чтению системной переменной os.arch. Хотя это работает, если пользователь запускает 64-битную JVM в 64-битной системе. Это не работает, если пользователь запускает 32-битную JVM в 64-битной системе.

Следующий код работает для правильного определения 64-разрядных операционных систем Windows. В 64-битной системе Windows будет установлена ​​переменная среды "Programfiles (x86)". Он НЕ будет установлен в 32-битной системе, и java будет читать его как null.

boolean is64bit = false;
if (System.getProperty("os.name").contains("Windows")) {
    is64bit = (System.getenv("ProgramFiles(x86)") != null);
} else {
    is64bit = (System.getProperty("os.arch").indexOf("64") != -1);
}

Для других операционных систем, таких как Linux, Solaris или Mac, мы также можем столкнуться с этой проблемой. Так что это не полное решение. Для Mac вы, вероятно, в безопасности, потому что Apple блокирует JVM в соответствии с ОС. Но Linux, Solaris и т. Д. Они все еще могут использовать 32-битную JVM в своей 64-битной системе. Так что используйте это с осторожностью.

74
ответ дан 7 November 2019 в 07:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: