我试图运行在运行时调用shell脚本的Java代码。
当我在终端中运行脚本时,我正在将参数传递给脚本
码:
./test.sh argument1
Java代码:
public class scriptrun { public static void main(String[] args) { try { Process proc = Runtime.getRuntime().exec("./test.sh"); System.out.println("Print Test Line."); } catch (Exception e) { System.out.println(e.getMessage()); e.printStackTrace(); } } }
如何在Java代码中为脚本传递参数?
在Java的最新版本中创建进程的首选方法是使用ProcessBuilder类,这使得此操作非常简单:
ProcessBuilder
ProcessBuilder pb = new ProcessBuilder("./test.sh", "kstc-proc"); // set the working directory here for clarity, as you've used a relative path pb.directory("foo"); Process proc = pb.start();
但是,如果您确实Runtime.exec出于某种原因想要/需要使用该方法,则可以使用该方法的重载版本,这些版本允许显式指定参数:
Runtime.exec
Process proc = Runtime.getRuntime().exec(new String[]{"./test.sh", "kstc-proc"});