Java 如果Runtime.getRuntime().exec失败,如何引发错误
我尝试以下几点:Java 如果Runtime.getRuntime().exec失败,如何引发错误,java,Java,我尝试以下几点: package ro.gd.ex; /** * Created by roroco on 11/17/14. */ public class Ex { public static void main(String[] args) { try { Process process = Runtime.getRuntime().exec("echo -n $(date)|xclip --selection clipboard");
package ro.gd.ex;
/**
* Created by roroco on 11/17/14.
*/
public class Ex {
public static void main(String[] args) {
try {
Process process = Runtime.getRuntime().exec("echo -n $(date)|xclip --selection clipboard");
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
如果我在终端中运行此cmd,它将引发
roroco@roroco ~/Dropbox/jvs/ro-gd $ echo -n $(date)|xclip --selection clipboard
xclip: --selection: No such file or directory
roroco@roroco ~/Dropbox/jvs/ro-gd $ echo $?
1
但是在java中,它没有引起什么问题,我的问题是如何使这个cmd抛出错误。我发现它的退出状态是1
我的操作系统:
roroco@roroco ~/Dropbox/jvs/ro-gd $ lsb_release -a
No LSB modules are available.
Distributor ID: LinuxMint
Description: Linux Mint 17 Qiana
Release: 17
Codename: qiana
process.waitFor()
,它将返回命令的错误级别,然后只需创建一个新的Exception
(可能是IOException
)
您也可以考虑使用<代码> PalueBuffer-<代码> > <代码>运行时。GeRunTune()
public static void main(String[] args) {
try {
ProcessBuilder pb = new ProcessBuilder(
"echo",
"-n",
"$(date)|xclip",
"--selection",
"clipboard"
);
pb.redirectError();
pb.inheritIO();
Process process = pb.start();
// Really should be reading the Process's InputStream
int exitCode = process.waitFor();
if (exitCode != 0) {
throw new IOException("Command exited with " + exitCode);
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
如果Runtime.getRuntime().exec失败,如何引发错误 process.waitFor();,exitCode是0,为什么? 什么时候: 0=正常退出。 1=退出时出错 此流程对象表示的子流程的退出值。按照惯例,值0表示正常终止,值1表示不良终止 有些代码可能是这样的: 进程p=Runtime.getRuntime().exec(“Seguridad.bat”)
<代码>进程。WAITFORE()/Cord>将返回命令的错误级别,然后简单地创建一个新的<代码>异常< /代码>(可能是<代码> IOExux< /代码>)……您也可以考虑使用<代码> PrimeBuffer-<代码> > <代码>运行时.GeRunTune()。我不想输入那么多:P@MadProgrammer不,我没有解决我的问题,关键是我何时运行echo$?在终端中,它是-1,但在int-exitCode=process.waitFor();,exitCode是0,为什么?我不确信
1
是退出代码(或者至少我对命令了解不够)不,我没有解决我的问题,关键是当我在终端中运行echo$?
时,它是-1,但在int exitCode=process.waitFor()中代码>,exitCode为0,为什么?什么操作系统?它为我打印0
(CLI)同样,你需要去澄清你的问题
public static void main(String[] args) {
try {
ProcessBuilder pb = new ProcessBuilder(
"echo",
"-n",
"$(date)|xclip",
"--selection",
"clipboard"
);
pb.redirectError();
pb.inheritIO();
Process process = pb.start();
// Really should be reading the Process's InputStream
int exitCode = process.waitFor();
if (exitCode != 0) {
throw new IOException("Command exited with " + exitCode);
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
int exitCode = p.waitFor();
if (exitCode != 0) {
JOptionPane.showConfirmDialog(null,"Error Execute when exitCode=1");
}else{
JOptionPane.showConfirmDialog(null,"fine Execute when exitCode=0");
}