簡體   English   中英

在 Java 中運行 AWS CLI bash 命令的問題

[英]Problems in running AWS CLI bash command within Java

我正在嘗試在 Java 代碼中運行 AWS 命令​​(在 Linux 中)。 像往常一樣,我嘗試在 Java 中像這樣運行 bash 命令。 但我想知道它沒有顯示任何內容。 並且只打印Exited with error code : 2 當我在 bash 中運行aws ls help時,它可以工作。

問題是什么? 如何解決?

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class TestCMD {
        public static void main(String[] args) {
                ProcessBuilder processBuilder = new ProcessBuilder();
                processBuilder.command("bash", "-c", "aws ls help");

                try {
                        Process process = processBuilder.start();
                        BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));

                        String line;
                        while ((line = reader.readLine()) != null) {
                                System.out.println(line);
                        }
                        int exitCode = process.waitFor();
                        System.out.println("\nExited with error code : " + exitCode);
                } catch (Exception e) {
                        e.printStackTrace();
                }
        }
}

Java 代碼不是問題。 它工作正常,您可以通過將command替換為

processBuilder.command("bash", "-c", "echo 1 2 3");

你有兩個“問題”。 第一個問題是aws將其輸出寫入 stderr,而不是 stdout。
第二個問題是aws返回 2 ,其中0恕我直言更好。
您可以在命令行上使用以下命令進行測試:

aws ls help 2>/dev/null; echo $?

問題可以解決

processBuilder.command("bash", "-c", "/usr/bin/aws ls help 2>&1; true");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM