Как я заставляю свое JAVA-приложение завершать работу приятно в окнах?

Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:

  1. Вызов метода экземпляра объекта null.
  2. Доступ или изменение поля объекта null.
  3. Принимая длину null, как если бы это был массив.
  4. Доступ или изменение слотов null, как если бы это был массив.
  5. Бросок null как будто это было значение Throwable.

Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null.

Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html

5
задан Free Wildebeest 14 September 2008 в 22:28
поделиться

2 ответа

Ранее упомянутый подход JNI будет, вероятно, работать.

Можно использовать JNA, который является в основном оберткой вокруг JNI, чтобы помочь использовать. Добавленная премия - то, что это (по-моему, по крайней мере) обычно быстрее и более удобно в сопровождении, чем необработанный JNI. Можно найти JNA в https://jna.dev.java.net/

Если Вы просто запускаете приложение в меню "Пуск", потому что Вы пытаетесь заставить его вести себя как сервис в окнах, можно использовать сервисную обертку Java, которая найдена здесь: http://wrapper.tanukisoftware.org/doc/english/download.jsp

3
ответ дан 14 December 2019 в 13:52
поделиться

Насколько я знаю, что необходимо начать использовать JNI для установки обработчика сообщений для сообщения Windows WM_QUERYENDSESSION.

Чтобы сделать это (если Вы плохо знакомы с Windows, программирующим как я), необходимо будет создать новый класс окна с новой функцией обработки сообщений (как описано здесь) и обработать WM_QUERYENDSESSION от обработчика сообщений.

NB: необходимо будет использовать JNIEnv:: GetJavaVM (...) и затем JavaVM:: AttachCurrentThread (...) на потоке обработки сообщений, прежде чем можно будет назвать любые методы Java из собственного кода обработки сообщений.

3
ответ дан 14 December 2019 в 13:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: