gpt4 book ai didi

Java Runtime.getRuntime() 非法参数异常

转载 作者:行者123 更新时间:2023-11-29 06:47:59 27 4
gpt4 key购买 nike

我在让 .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();
}

它打印出它应该看起来的命令。当我在这里运行程序时,输出是:

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)

最佳答案

您正试图在没有 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"};

或者在 Windows 中:

String fullCommand = {"cmd.exe", "/c", "find -b dc=stuff,dc=com -f \"cn=user\" |find \"displayName\" >> fullList.txt"};

关于Java Runtime.getRuntime() 非法参数异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1121871/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com