2012-12-18 2 views
3

나는 이미 당신이 그것을 시작할 때 시작되었는지 확인해야 자바 FX 응용 프로그램이 (당시 만 실행 단일 인스턴스가 필요합니다). 문제는 그것을 정의하는 방법입니다!프로세스 관리자에서 JavaFX 응용 프로그램을 찾는 방법은 무엇입니까?

내 JavaFX 응용 프로그램을 "javaw.exe"가 아닌 Windows 작업 관리자에서 "MyProg.exe"프로세스로 표시되는 .exe 파일 (또는 .exe 시작 프로그램)에 압축 해 보았습니다. 하지만 그것은 응용 프로그램에 jre를 추가하여 1 메가 바이트부터 확대하기 때문에 솔루션이 아닙니다 (netbeans 도구를 사용해 보았습니다). ~ 130 + MB. 내가 launch4j를 시도했습니다

(can you help me with it?)하지만, 실행 및 .EXE 패키지 모두 내 응용 프로그램을 실행하는 데 javaw.exe가 시작됩니다. 그리고 프로세스 관리자를 확인하고 2 javaw.exe를 보면 잘 모르겠다. 내 앱이 2 인스턴스인가, 아니면 다른 앱이 실행 중입니까?

가 나는 누군가가 나를 도울 수 있다면 매우 감사 할 것입니다 clearand 설명 바랍니다!

답변

2

당신의 접근 방식에 의해 심사는 이미 자바에서 윈도우 프로세스의 목록을 얻을 수있는 방법을 찾을 것으로 보인다. 이 경우 다음 해결책 중 하나를 사용할 수 있습니다.

  1. 다른 프로세스 정보도 고려하십시오. 예 : 명령 행 또는 창 제목. Windows 명령 행은 wmic.exe PROCESS 명령을 사용하고 유닉스 - 기반 시스템은 ps -Af을 사용하여 검색 할 수 있습니다. 프로그램이 가게를 시작하면
  2. 그것은 홈 디렉토리에서 레지스트리 나 파일의 프로세스 ID입니다. 다른 인스턴스가 시작되면 해당 값을 확인하고 해당 ID가있는 프로세스가 살아 있는지 확인한 다음 종료하십시오.
+0

2 : 내 프로그램의 수명이 비극적으로 끝나면 (태스크 킬, OS 다시 시작) 레지스트리 종료시 레지스트리 항목을 삭제할 수 없으면 어떻게해야합니까? 다른 javaw.exe가 동일한 PID를 가질 수 있습니까? (여전히 가능합니다!) 레지스트리에 저장되어 장애가되어 내 앱을 시작합니까? – Chechulin

+0

1 : Wmic에 대해 몰랐습니다. – Chechulin

+0

@Chechulin : 예, 꽤 비극적 인 우연 일 수 있습니다. 그러나 당신은 프로세스 ID/이름/경로 접근법에서 확신 할 수 없습니다. 누군가는 javaw를 사용하여 자신과 정확히 동일한 이름으로 항아리를 실행할 수 있습니다. 소켓 또는 유사한 프로세스 간 통신 옵션을 사용하여 핸드 셰이크 프로토콜을 소개하는 것이 가장 완벽한 방법입니다. 따라서 시작중인 응용 프로그램은 이미 실행 된 상태를 확인할 수 있습니다. –

관련 문제