Создайте JVM после ее уничтожения

#java #c #java-native-interface

#java #c #java-native-interface

Вопрос:

Я пытаюсь вызвать JNI_CreateVM после вызова destroyVM, но он всегда возвращает -1. Это ошибка в JDK?

Я нашел следующую ссылку, которая описывает ту же проблему: Ошибка JNI

По ссылке приведен пример кода, который воспроизводит проблему, с которой я столкнулся. У кого-нибудь есть идея, как решить эту проблему?

Спасибо,

Сами

Комментарии:

1. Этот вопрос касается Sun JVM или DRLVM?

2. Речь идет о Sun JVM. Но это единственная ссылка, которую мне удалось найти, которая воспроизводит эту проблему. Я воспроизвел его на своей стороне и получил тот же результат (-1 при втором createVM)

3. Вы уверены, что ваш вызов DestroyJavaVM прошел успешно?

4. Да, возвращаемое значение уничтожения виртуальной машины Java равно 0.

Ответ №1:

Я столкнулся с этой проблемой давным-давно. Вот соответствующая запись об ошибке — http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4712793

Комментарии:

1. Спасибо за ссылку. Похоже, что нет планов по ее решению.

Ответ №2:

Я нашел пару сообщений на форуме, в которых сообщается, что CreateJavaVM / DestroyJavaVM / CreateJavaVM не работает; например

Консенсус заключается в том, что DestroyJavaVM не работает полностью из-за ограничений в JVM. Некоторые люди сообщают, что он постоянно возвращает значение -1. Даже спецификация JNI намекает на ограничения.

Похоже, в базе данных ошибок нет записи для этого, но может быть просто, что Oracle закрыла / удалила / скрыла более ранние записи. (Похоже, недавно они провели «генеральную уборку» общедоступного представления базы данных, и поиск часто не работает должным образом.)

Комментарии:

1. Спасибо за ответ. Я попытаюсь открыть запись в базе данных ошибок и посмотреть, что произойдет.

2. Не задерживайте дыхание. Это ограничение, похоже, существует уже долгое время.

3. @StephenC Я знаю, что это старый вопрос. Сейчас я сталкиваюсь с той же проблемой, и я не смог найти никакого обходного пути для этого. Есть ли что-нибудь альтернативное, что можно сделать по этому поводу.

4. AFAIK, нет, это не так.