2017-12-13 2 views
-1

나는 더 신선하고 완벽하게 실행되는 자바 스윙 응용 프로그램을 만들었습니다.자바 스윙 응용 프로그램을 다시 시작하십시오.

사용자가 작업 관리자에서 닫거나 강제 종료하거나 다른 방법으로 종료 할 때이 응용 프로그램을 종료하거나 닫을 때이 응용 프로그램에 기능을 추가하고 싶습니다. 응용 프로그램은 일정 시간이 지나면 자동으로 다시 시작됩니다.

그렇게 할 수 있습니까?

+1

를 참조하십시오. 강제 종료 후 재시작에 대해 이야기 할 때 꽤 어려울 것이라고 생각하십니까? –

+0

OS에서 실행 하시겠습니까? –

+1

예약 된 작업을 설정하여 응용 프로그램을 시작할 수 있습니다. Windows 용 스케줄러 또는 Linux 기반 시스템 용 crontab을 사용하십시오. – ErrorNotFoundException

답변

0
new java.util.Timer().schedule(
    new java.util.TimerTask() { 
     @Override 
     public void run() { 
      final String javaBin = System.getProperty("java.home") + File.separator + "bin" + File.separator + "java"; 
      final File currentJar = new File(MyClassInTheJar.class.getProtectionDomain().getCodeSource().getLocation().toURI()); 

      /* is it a jar file? */ 
      if(!currentJar.getName().endsWith(".jar")) 
      return; 

      /* Build command: java -jar application.jar */ 
      final ArrayList<String> command = new ArrayList<String>(); 
      command.add(javaBin); 
      command.add("-jar"); 
      command.add(currentJar.getPath()); 

      final ProcessBuilder builder = new ProcessBuilder(command); 
      builder.start(); 
      System.exit(0);          
     } 
    }, 
    5000); 

당신 가까이에 숨기도록 응용 프로그램을 정의 할 수 있습니다 https://docs.oracle.com/javase/6/docs/api/java/util/Timer.html

+0

이 코드는 어떻게 응용 프로그램을 다시 시작하나요? 그것은 단지 JVM에게 종료를 지시합니다. – SurfMan

+0

@SurfMan :하지만 그 전에는 응용 프로그램을 실행하는 새로운 Java 프로세스가 생성됩니다. –

+0

예, 프로세스를 다시 시작합니다. 두 단계를 수행하십시오. 중지 및 시작. 위의 코드 블록은 동일한 것을 유지합니다. 개인 jvm 인스턴스 중지 및 새 jvm 인스턴스 작동. – Hardik

관련 문제