2016-12-16 36 views
1

我想從我的Java程序在Eclipse IDE上執行.jar文件。要做到這一點,我使用批處理命令(Java的罐子myJar.jar ARG1參數3 ARG4),我已經嘗試使用:從java中的eclispe執行.jar只有當我點擊終止

  • Runtime.getRuntime().exec(cmd)
  • Process process = new ProcessBuilder(args).start();

在這兩種情況下,沒有任何反應,除非我在執行結束之前自己終止進程。 有趣的是,當我在Windows會話的命令提示符下自己執行命令時,它可以工作。

我希望我的問題很清楚,謝謝你的幫助。

+0

因此,將jar放在classpath中並直接調用main()方法。 ,澄清一下,你終止Eclipse中的運行後,你的Jar將被啓動? – dhcarmona

+0

你怎麼知道它沒有運行?有沒有預期在控制檯中看不到輸出? – Matt1776

+0

感謝您的答覆球員,基本上這個jar是創建一個xml文件。當我執行Runtime.getRuntime().exec(cmd)行時,什麼也沒有發生,但是如果我點擊terminate,文件出現 – 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中運行(再次支持Java跨平臺功能),但如果這是您的目標,那麼這應該起作用。 –

0

爲什麼不直接從Java程序運行的主要方法是什麼?例如,如果jar運行的是org.foo.bar.MyMainClass,那麼在你的java代碼中調用MyMainClass.main(args [])