У меня есть апплет JNLP, который запускается на 64-битном компьютере с установленной 32- и 64-битной JVM. JNLP должен работать на 64-битной JVM для правильного выполнения. Есть ли способ принудительно использовать 64-битную JVM?
Как убедиться, что jnlp запускается на 64-битной jvm
- Для правильной работы JNLP должен работать на 64-битной JVM. Почему? 14.12.2011
- @Андрей, память! это тяжело. Также, возможно, родные библиотеки и т.д. 14.12.2011
- @bestsss Спасибо, но я не просил домыслов у прохожих. Мне нужен конкретный ответ от ОП. 14.12.2011
- @ Эндрю, так что задай новый вопрос о. если серьезно, неважно почему, ограничения JNI/JNA/памяти на 64-битной версии сильно отличаются, так же как и максимальная виртуальная память для отображаемых файлов и т. д. 14.12.2011
Ответы:
Используйте -d64
параметр VM, чтобы разрешить запуск виртуальной машины только с 64-битной системой. По другому просто не заводится. Не дружелюбный, но сделать работу. В режиме консоли напечатайте:
Error: This Java instance does not support a 32-bit JVM.
Please install the desired version.
-d64
поддерживается с версии 1.5.0
См. здесь: Как узнать, работаю ли я в 64-битной JVM или 32-битной JVM (из программы)?
Вы можете использовать это для обнаружения 64-битной JVM, и если это не так, вы показываете сообщение об ошибке.
Если вы используете 64-битный браузер, используется 64-битная JVM. Если вы используете 32-битный браузер (который в настоящее время используется по умолчанию для большинства браузеров), используется 32-битная JVM. Так, например. Firefox и Chrome имеют только 32-битные версии (конечно, есть тестировать/разрабатывать версии, но ничего официального ). Microsoft IE — одна из немногих предлагающих обе версии.
Вы не можете гарантировать, что jnlp будет работать в 64-битной среде. Однако вы можете убедиться в том, что ваш код апплета был запущен в правильной среде:
String architecture = System.getProperty("os.arch");
if(architecture.equals("i386") || architecture.equals("i686")){
architecture = "x86";
}
else if(architecture.equals("amd64") || architecture.equals("universal")){
architecture = "x86_64";
}