只有当我点击终止

时间:2016-12-16 16:54:30

标签: java batch-processing terminate

我正在尝试从Eclipse IDE上的java程序执行.jar文件。为此,我使用批处理命令(java -jar myJar.jar arg1 arg2 arg3 arg4),我尝试过使用:

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

在这两种情况下,没有任何反应,除非我在执行结束前自行终止进程。 有趣的是,当我在Windows会话中的命令提示符下自己执行命令时,它可以工作。

我希望我的问题很清楚,谢谢你的帮助。

2 个答案:

答案 0 :(得分: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();
} 

答案 1 :(得分:0)

为什么不直接从Java程序运行main方法?将jar放在类路径上并直接调用main()方法...例如,如果jar运行org.foo.bar.MyMainClass,那么在java代码中调用MyMainClass.main(args [])