![](/img/trans.png)
[英]Is it possible for a java.lang.Process to inherit the environement variables from another java.lang.Process?
[英]Issue while deleting folder from hdfs with java.lang.Process
從java.lang.Process
執行 hadoop 命令時出現問題。
hadoop fs -rm -R -skipTrash pathToFolder
直接在 unixbox 上執行的這個命令正在運行,但是當我嘗試從 Process 執行它時,它顯示'-rm -R'
未知命令。
public class Test1 {
public static void main(String[] args) throws IOException {
String[] commandToDelete = new String[]{"hadoop", "fs","-rm -R", "-skipTrash", "hdfs://pathToFolder"};
Process process = Runtime.getRuntime().exec(commandToDelete);
try {
process.waitFor();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(process.exitValue());
BufferedReader errorReader = new BufferedReader(
new InputStreamReader(process.getErrorStream()));
String line = null;
while ((line = errorReader.readLine()) != null) {
System.out.println(line);
}
errorReader.close();
}
}
從同一位置我可以刪除文件但不能刪除文件夾任何建議。
在單獨的進程中執行指定的命令和參數。
這是一種方便的方法。 調用 exec(cmdarray) 形式的行為與調用 exec(cmdarray, null, null) 完全相同。
所以你下面的命令在單獨的進程中運行,這就是為什么-rm -R
是未知命令:
String[] commandToDelete = new String[]{"hadoop", "fs","-rm -R", "-skipTrash", "hdfs://pathToFolder"};
運行如下:
String command = "hadoop fs -rm -R -skipTrash hdfs://pathToFolder"
Process process = Runtime.getRuntime().exec(command);
一個更健壯的解決方案(防止您在路徑中出現空格的后續問題)是保留String[]
形式,但正確拆分參數:
String[] commandToDelete = new String[]{"hadoop", "fs", "-rm", "-R", "-skipTrash", "hdfs://pathToFolder"};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.