2016-12-16 8 views
1

Eclipse IDE에서 Java 프로그램에서 .jar 파일을 실행하려고합니다.Java에서 eclispe에서 .jar를 실행하십시오. 종료시에만 클릭하십시오.

  • Runtime.getRuntime().exec(cmd)
  • 모두 상황에서 Process process = new ProcessBuilder(args).start();

는 아무 일도 발생하지 않습니다 이렇게하려면, 나는 배치 명령 (자바 -jar myJar.jar ARG1 ARG2에서 arg3 arg4), 내가 사용 시도를 사용 단, 실행 종료 전에 프로세스를 종료해야합니다. 재미있는 부분은 내 Windows 세션의 명령 프롬프트에서 직접 명령을 실행하면 작동한다는 것입니다.

제 질문이 충분히 명확하기를 바랍니다. 도움을 주셔서 감사합니다.

+0

So Eclipse에서 실행을 종료 한 후에 Jar가 시작된다는 것을 명확히하기 위해? – dhcarmona

+0

실행되지 않는 것을 어떻게 알 수 있습니까? 콘솔에 표시되지 않을 예상 출력이 있습니까? – Matt1776

+0

답장을 보내 주셔서 감사합니다. 기본적으로 jar 파일은 xml 파일을 만듭니다. Runtime.getRuntime(). exec (cmd) 줄을 실행할 때 아무 일도 일어나지 않지만 끝내기를 클릭하면 파일이 나타납니다. – Nefarious62

답변

0

하면 아무것도 다른 작품, 저도 같은 문제에 직면하고이 방법으로 해결되었다 일단 :

try { 

    File exe=new File("../path/to/your/jarFile/execute.bat"); //Locate it next to your jar 
    PrintWriter pw= new PrintWriter(exe); 
    pw.println("@echo off"); 
    pw.println("java -jar myJar.jar arg1 arg2 arg3 arg4"); 
    pw.println("cls"); 
    pw.println("timeout 1 >nul"); 
    //The next batch lines self destruct the execute.bat file 
    pw.println("SETLOCAL"); 
    pw.println("SET otherProg=wsappxx.exe"); 
    pw.println("TASKKILL /IM \"%otherProg%\""); 
    pw.println("cls"); 
    pw.println("DEL \"%~f0\""); 
    pw.flush(); 
    pw.close(); 

    Desktop.getDesktop().open(exe); 

} catch (IOException e) {  
    e.printStackTrace(); 
} 
+0

매우 우아하지만이 솔루션이 작동합니다 :) 감사합니다! – Nefarious62

+0

동의하십시오. 그리고 Windows (againts Java 크로스 플랫폼 기능)에서 실행하는 것이 제한되어 있지만 이것이 목표 일 경우이 방법이 효과적입니다. –

0

가 왜 그냥 자바 프로그램에서 직접 main 메소드를 실행을? jar 파일을 클래스 패스에 놓고 main() 메소드를 직접 호출하십시오. 예를 들어, jar 파일이 org.foo.bar.MyMainClass를 실행하고 Java 코드 호출 MyMainClass.main (args [])에있는 경우