Dus*_*tin 1 java runtime-error
我在使.getruntime.exec()正常工作时遇到了一些问题.以下是处理该部分的代码:
while (line != null)
{
String name = line;
String commandFull = commandFirst + name + commandLast;
String[] fullCommand = new String[] {commandFirst, name, commandLast};
for(int i=0;i<3;i++)
{
System.out.print(fullCommand[i]);
}
Runtime runner = Runtime.getRuntime();
Process p = runner.exec(fullCommand);
outFile.println(fullCommand);
line = inFile.readLine();
}
Run Code Online (Sandbox Code Playgroud)
它打印出应该看起来的命令.当我在这里运行程序时输出:
adfind -b dc=stuff,dc=com -f "cn=user" |find "displayName" >> fullList.txt
Exception in thread "main" java.lang.IllegalArgumentException
at java.lang.ProcessImpl.<init>(Unknown Source)
at java.lang.ProcessImpl.start(Unknown Source)
at java.lang.ProcessBuilder.start(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at java.lang.Runtime.exec(Unknown Source)
at lookup.main(lookup.java:41)
Run Code Online (Sandbox Code Playgroud)
您正在尝试在没有shell的情况下执行shell命令.
也就是说,您正在尝试执行shell将解释的内容(特别是管道'|'和追加'>>').要解决此问题,请让Java执行shell实例并将整个命令传递给shell.这将如何工作取决于平台.
例如在Linux中:
String fullCommand = {"/bin/sh", "-c", "find -b dc=stuff,dc=com -f \"cn=user\" |find \"displayName\" >> fullList.txt"};
Run Code Online (Sandbox Code Playgroud)
或者在Windows中:
String fullCommand = {"cmd.exe", "/c", "find -b dc=stuff,dc=com -f \"cn=user\" |find \"displayName\" >> fullList.txt"};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1771 次 |
| 最近记录: |