我正在尝试使用Runtime.getrunTime().exec从另一个java程序运行java程序
代码:
String java_home = System.getenv("JAVA_HOME");
String[] command = {""+java_home+"/bin/java -cp -cp /sc/sug/p-lib/* Tdesigner -cd /pr -in ing.rsp -out /scratch/sug/ng.pla -ad -stopO "};
try {
proc = Runtime.getRuntime().exec(command);
proc.waitFor();
int exitCode = proc.exitValue();
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}它给出了以下错误:
java.io.IOException: Cannot run program "/net/sl/sc/jdk6/bin/java -cp /sc/sug/p-lib/* Tdesigner -cd /pr -in ing.rsp -out /scratch/sug/ng.pla -ad -stopOnError ": java.io.IOException: error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:460)
at java.lang.Runtime.exec(Runtime.java:593)
at java.lang.Runtime.exec(Runtime.java:466)有人能帮我解决这个问题吗?是否需要使用-cp添加单独的jar文件,而不是设置目录。
发布于 2012-10-16 06:17:23
尝试从命令字符串数组中删除额外的-cp,并在数组中使用单独的标记:
String[] command = { java_home + "/bin/java", "-cp",
"/sc/sug/p-lib/*", "Tdesigner", "-cd", "/pr", "-in", "ing.rsp",
"-out", "/scratch/sug/ng.pla", "-ad", "-stopO" };发布于 2012-10-16 06:02:48
如果使用exec(String[]),则必须在单独的数组元素中提供命令及其参数,而不是像您所做的那样在一个元素中提供所有参数。
发布于 2014-06-18 02:58:51
我使用scala。下面是我的代码:
Runtime.getRuntime.exec(Array("/bin/bash", "-c", #your_command)).waitFor()我认为对于其他使用java的人来说,这很容易理解。
https://stackoverflow.com/questions/12904640
复制相似问题