Windows에서 Java 애플리케이션을 제대로 종료하려면 어떻게 해야 합니까?

StackOverflow https://stackoverflow.com/questions/61692

  •  09-06-2019
  •  | 
  •  

문제

사용자가 시작->종료를 선택할 때 '적절하게' 종료하려는 Java 응용 프로그램이 있습니다.Runtime.addShutdownHook(...)을 통해 JVM 종료 리스너를 사용해 보았지만 UI 요소를 사용할 수 없기 때문에 작동하지 않습니다.

또한 기본 애플리케이션 UI 창에서 종료 핸들러를 사용해 보았지만 제가 알 수 있는 한 종료를 일시 중지하거나 중지할 수 있는 방법이 없습니다.종료를 어떻게 잘 처리할 수 있나요?

도움이 되었습니까?

해결책

앞서 언급한 JNI 접근 방식이 작동할 가능성이 높습니다.

기본적으로 JNI 주변의 래퍼인 JNA를 사용하면 더 쉽게 사용할 수 있습니다.추가 보너스는 (적어도 제 생각에는) 일반적으로 원시 JNI보다 더 빠르고 유지 관리가 더 쉽다는 것입니다.JNA는 다음에서 찾을 수 있습니다. https://jna.dev.java.net/

애플리케이션이 Windows의 서비스처럼 작동하도록 하기 위해 시작 메뉴에서 애플리케이션을 시작하는 경우 여기에 있는 Java 서비스 래퍼를 사용할 수 있습니다.http://wrapper.tanukisoftware.org/doc/english/download.jsp

다른 팁

내가 아는 한 Windows용 메시지 핸들러를 설정하려면 JNI를 사용해야 합니다. WM_QUERYENDSESSION 메시지.

이렇게 하려면(나처럼 Windows 프로그래밍이 처음인 경우) 새 메시지 처리 기능이 있는 새 창 클래스를 만들어야 합니다(설명 참조). 여기) 메시지 처리기에서 WM_QUERYENDSESSION을 처리합니다.

참고:기본 메시지 처리 코드에서 Java 메서드를 호출하려면 먼저 메시지 처리 스레드에서 JNIEnv::GetJavaVM(...)을 사용한 다음 JavaVM::AttachCurrentThread(...)를 사용해야 합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top