Нет "серверной" JVM в "..." - PullRequest
23 голосов
/ 09 мая 2011

Я использую Java-приложение, которое мы распространяем как серверную систему. Я пытаюсь написать модуль запуска («запись» здесь несколько преувеличена, я просто копирую файл Java.exe, чтобы мы могли получить желаемое имя в проводнике процессов Windows). Этот exe находится в каталоге bin / нашего дерева файлов приложений.

Теперь у нас также есть каталог jre / в нашем дереве файлов, в котором фактически находится Java.exe (мы поставляем наш продукт со средой Java). Когда я использую Java.exe в качестве модуля запуска, который находится в папке \ jre \ jre1.6.0_21 \ bin, или если я помещаю копию (назовите это исполняемым «Orange.exe»), которую я сделал в этом каталоге, она прекрасно работает , Но если я помещаю свой Orange.exe в каталог bin \, я получаю следующую ошибку:

Error: no 'server' JVM at 'C:\Program Files\Java\jre6\bin\server\jvm.dll'

Мне кажется, я понимаю, что здесь происходит - я хочу использовать серверную версию файла jvm.dll, который находится в нашем каталоге jre. Проблема в том, что я не понимаю, ПОЧЕМУ он не выглядит в каталоге jre \ jre1.6.0_21 в моем пути приложения. Я установил мою переменную среды JAVA_HOME в это место. Похоже, что по умолчанию используется другое ожидаемое для всей системы местоположение.

Кто-нибудь знает, как я могу изменить это, чтобы оно выглядело в моем каталоге приложений, предоставляемом приложением? В идеале это будет переменная окружения, так как мне нужно вызывать это приложение с параметрами, используя командный файл.

Ответы [ 7 ]

42 голосов
/ 22 ноября 2011

Есть небольшая хитрость для запуска и запуска серверной JVM:

  1. Скопируйте папку "server" из примера папки bin JRK JDK: C:\Program Files\Java\jdk1.6.0\jre\bin\server
  2. Вставьтепапка "server" для примера папки bin JRE: C:\Program Files\Java\jre1.6.0\bin
  3. Done

См. официальный readme для получения подробной информации.

9 голосов
/ 19 июля 2012

Я только что боролся с этой же проблемой в Eclipse, и я заметил, что, как следует из ответа выше, на сайте JBoss есть тема по этому вопросу, говорящая так же, как и ответ выше для копирования файлов. из JDK в папку JRE.

Я заметил, что вы можете избежать этого, если при создании сервера вы определите, что среда выполнения является jdk. Я не нашел, как отредактировать существующий сервер.

eclipse Screenshot

5 голосов
/ 10 мая 2011

AFAIK, JRE обычно не поставляется с виртуальной машиной сервера (только клиентская виртуальная машина).Если вам действительно нужна серверная виртуальная машина, вы должны использовать установку JDK.

См. Oracle Java для разработчиков Страница загрузки для JRE с серверной виртуальной машиной.

1 голос
/ 11 февраля 2014

У меня была такая же проблема, но в моем случае я просто не обновил должным образом JAVA_HOME и мой PATH для моего недавно установленного JDK. Я только что обновил его до моего нового местоположения JDK, и сервер запустился просто отлично.

0 голосов
/ 29 ноября 2017

Я решил ту же проблему, установив путь JAVA_HOME в C:\Program Files (x86)\Java\jre1.8.0_131\bin

0 голосов
/ 04 июля 2014

Убедитесь, что файл server / jvm.dll должен быть там, когда мы пытаемся запустить такие серверы, как servicemix.

Скопируйте папку "server" из примера папки bin JRE JDK:C: \ Program Files \ Java \ jdk1.6.0 \ jre \ bin \ server

Вставьте папку "server" в пример папки bin JRE: C: \ Program Files \ Java \ jre1.6.0 \ bin

Я справился с проблемой, я прошел выше ... Это нормально работает.

Спасибо!

0 голосов
/ 09 мая 2011

Windows ищет библиотеки DLL в переменной среды LIBPATH.

И убедитесь, что ваш 1.6.0_21 находится где-то первым в PATH.

...