【发布时间】:2011-06-04 23:35:49
【问题描述】:
从 java 调用 shell 命令的常用方法是这样的:
Process process = Runtime.getRuntime().exec(command);
并且通常可以正常工作。 但是现在我已经将我的项目导出到一个可执行的 jar 文件并且 callig shell 命令不再工作了。有没有针对这个问题的解释、解决方案或变通方法?
飞哥
--
编辑:
甚至无法识别键盘中断 (ctrl+c; ctrl+d)。
杀死java后终端输入不起作用
--
最小的程序:
import java.io.BufferedWriter;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.IOException;
public class Test {
public static String fileName = "";
/** test if you can open a 7z archive file with a given password */
public static boolean test(String password)
throws IOException, InterruptedException {
String command = "7z l "+fileName;
Process process = Runtime.getRuntime().exec(command);
OutputStream out = process.getOutputStream();
OutputStreamWriter w = new OutputStreamWriter(out);
BufferedWriter writer = new BufferedWriter(w);
writer.write(password+"\n");
writer.close();
w.close();
out.close();
if(process.waitFor() == 0) {
return true;
}
else {
return false;
}
}
public static void main(String[] args) throws IOException, InterruptedException {
fileName = args[0];
test(args[1]);
}
}
【问题讨论】:
-
如果有什么错误?
-
没有错误,没有异常,什么都没有。这完全让我感到困惑。
-
您可以编写并导出到具有这种行为的 jar 中的最小程序是什么?
-
对于这个愚蠢的问题,我深表歉意,但值得一问……如果您从 IDE 运行它是否有效,或者它永远不会有效?
-
是的,我用的是 Eclipse IDE
标签: java shell jar executable-jar