仅当我单击终止时才从 java 中的 eclipse 执行 .jar
Execute .jar from eclispe in java only when I click on terminate
我正在尝试从我的 java 程序在 Eclipse IDE 上执行一个 .jar 文件。为此,我使用批处理命令(java -jar myJar.jar arg1 arg2 arg3 arg4),我尝试使用:
Runtime.getRuntime().exec(cmd)
Process process = new ProcessBuilder(args).start();
在这两种情况下,什么都没有发生,除非我在执行结束前自己终止了进程。
有趣的是,当我在 windows 会话的命令提示符下自己执行命令时,它起作用了。
希望我的问题够清楚了,谢谢你的帮助。
如果没有别的办法,有一次我遇到同样的问题,是这样解决的:
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();
}
为什么不直接从您的 Java 程序 运行 main 方法?将 jar 放在你的类路径上并直接调用 main() 方法...例如,如果 jar 运行s org.foo.bar.MyMainClass,那么在你的 java 代码中调用 MyMainClass.main (args[])
我正在尝试从我的 java 程序在 Eclipse IDE 上执行一个 .jar 文件。为此,我使用批处理命令(java -jar myJar.jar arg1 arg2 arg3 arg4),我尝试使用:
Runtime.getRuntime().exec(cmd)
Process process = new ProcessBuilder(args).start();
在这两种情况下,什么都没有发生,除非我在执行结束前自己终止了进程。 有趣的是,当我在 windows 会话的命令提示符下自己执行命令时,它起作用了。
希望我的问题够清楚了,谢谢你的帮助。
如果没有别的办法,有一次我遇到同样的问题,是这样解决的:
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();
}
为什么不直接从您的 Java 程序 运行 main 方法?将 jar 放在你的类路径上并直接调用 main() 方法...例如,如果 jar 运行s org.foo.bar.MyMainClass,那么在你的 java 代码中调用 MyMainClass.main (args[])