Люди! Человеки! Помогите с проблемой кто может.
В общем, беда такая: не получается заставить Windows использовать ту JRE, какую надо.
Вернее будет даже так: есть одна программа (не на java, доступа к исходникам нет, доступа к параметрам запуска тоже нет) из нее запускается java с нужным jar-файлом. Делается это чем-то вроде ShellExecute. Задача заключается в том, чтоб jar-файл запустился под JRE не ниже 1.4.
Вот тут то и начинаются фокусы - есть несколько машин, на них запуск этого процесса происходит под разными JRE - от 1.3 до 1.5.
Вроде бы это регулируется ключиком реестра HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\CurrentVersion, НО изменение его значения, ну скажем, с 1.3 на 1.4 выдает сообщение типа "HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\CurrentVersion has value 1.4 but 1.3 is required." JAVA_HOME при этом походу игнорируется напрочь.
Таким образом, вопрос сводится именно к изменению настроек системы - варианты с указанием пути к запускаемой java, написанием различного рода launch-модулей, bat-ников не подходят.
JRE в Windows
Модератор: Absurd
Почти ничего не понял.
Реестр - это для апплетов. Если у тебя вызов через ShellExecute идёт, то система запускает то, что находит первым в системных путях или путях, указанных в переменной Path. Соответственно поступаешь просто: в коммандной строке пишешь java -version и редактированием путей в переменной Path добиваешься того, чтобы вызвалась java с той версией, которая нужна тебе.
Реестр - это для апплетов. Если у тебя вызов через ShellExecute идёт, то система запускает то, что находит первым в системных путях или путях, указанных в переменной Path. Соответственно поступаешь просто: в коммандной строке пишешь java -version и редактированием путей в переменной Path добиваешься того, чтобы вызвалась java с той версией, которая нужна тебе.
Даже самый дурацкий замысел можно воплотить мастерски
Хм... Про path то я и забыл написать...
Все дело в том, что на path тоже не влияет на результат... Например на машине, где первым в path прописан JRE1.4.09... запускается стабильно 1.5.
А что значит что реестр -для аплетов? Почему тогда изменение ключа в реестре приводит к ошибке которую я описал в первом сообщении?
Все дело в том, что на path тоже не влияет на результат... Например на машине, где первым в path прописан JRE1.4.09... запускается стабильно 1.5.
А что значит что реестр -для аплетов? Почему тогда изменение ключа в реестре приводит к ошибке которую я описал в первом сообщении?
Чудес на свете не бывает. Поиск файла, который запустит система по имени (java.exe) производится по путям, установленным в системе. По записи в реестре, возможно, уже сама java определяет какие классы грузить. И ругается, когда обнаруживает несоответствие.
Раньше можно было нужные классы подсунуть при помощи переменной classpath, возможно и сейчас это прокатит.
Раньше можно было нужные классы подсунуть при помощи переменной classpath, возможно и сейчас это прокатит.
Даже самый дурацкий замысел можно воплотить мастерски