Как решить проблему, связанную с отсутствующей "серверной" JVM в папке "C:\Program Files\Java\jre7\bin\server\jvm.dll"
Я видел несколько ответов на этот вопрос, но, похоже, он мне не подходит. У меня есть папка "client" внутри "bin", в которой есть такой файл (в Program Files x86), но когда я устанавливаю переменную JAVA_HOME в эту папку java, она показывает эту ошибку всякий раз, когда я пытаюсь запустить службу (я пытаюсь запустить Atlassian Fisheye в качестве службы). Я попытался скопировать содержимое папки "client" и создать папку "server", но затем ошибка изменилась
Error occurred during initialization of VM,
Could not reserve enough space for object heap,
Could not create the Java Virtual Machine,
A fatal exception has occurred. Program will exit.
если я также установил 64-битную версию Java, там у меня есть эта папка "сервер", я попытался скопировать эту папку, но все равно бесполезно. если я изменю свой путь JAVA_HOME на эту 64-битную папку java, служба будет запущена успешно (или это так кажется), но я не могу получить доступ к Fisheye, и появляется предупреждение:
WARNING - Unable to load the Wrapper's native library 'wrapper.dll'. The file is located on the path at the following location but could not be loaded: C:\installs\service\fisheye28\wrapper\lib\wrapper.dll. Please verify that the file is readable by the current user and that the file has not been corrupted in any way. System signals will not be handled correctly.
согласно этому руководству, это происходит, если мы используем 64-битную Java, и мы должны использовать 32-битную, даже если это 64-битная машина. Итак, я застрял между этими вопросами. ошибка "сервер" исчезнет, если я использую 64-битную версию, но тогда появляется это предупреждение, и я не могу получить доступ к Fisheye. если я использую 32-разрядную версию, папка "server: не найдена", и даже если я скопирую файлы и создаю папку, служба все равно не запустится.
2 ответа
Я знаю, что вопрос уже довольно старый. Но я постараюсь объяснить, что сработало для меня:
Я попытался скопировать содержимое папки "client" и создать папку "server", но затем ошибка изменилась
Этот трюк был признан полезным многими пользователями в аналогичном вопросе. Однако вы не можете использовать клиент Java в качестве сервера Java.
В этом ответе ( /questions/35019076/realnyie-razlichiya-mezhdu-java-server-i-java-client/35019081#35019081) вы можете увидеть причину. В принципе:
- Виртуальная машина сервера была специально настроена для максимизации максимальной скорости работы.
- Виртуальная машина сервера содержит усовершенствованный адаптивный компилятор, который поддерживает многие из тех же типов оптимизации, которые выполняются путем оптимизации компиляторов C++, а также некоторые оптимизации, которые не могут быть выполнены традиционными компиляторами.
Решение, которое я нашел, состояло в том, чтобы загрузить сервер Java с: http://www.oracle.com/technetwork/java/javase/downloads/server-jre7-downloads-1931105.html
Затем я добавил папку сервера в...\Java\jre7\bin\
AFAIK JAVA_HOME должен указывать на каталог установки jre, а не на папку, содержащую jvm.dll.
Поэтому попробуйте установить JAVA_HOME в родительский каталог папки bin...