簡體   English   中英

Java.io.IOException:錯誤= 2,在Java中執行curl時沒有此類文件或目錄

[英]Java.io.IOException: error=2, No such file or directory on executing curl in java

我正在使用curl進行基於證書的/ x509身份驗證

String command = "curl --cert " +certificateFilePath+" --key "+ certificateKeyFilePath+" --insecure "+authUrl;

          ProcessBuilder process = new ProcessBuilder(command); 
            Process p;
            try
            {
                p = process.start();
                 BufferedReader reader =  new BufferedReader(new InputStreamReader(p.getInputStream()));
                    StringBuilder builder = new StringBuilder();
                    String line = null;
                    while ( (line = reader.readLine()) != null) {
                            builder.append(line);
                            builder.append(System.getProperty("line.separator"));
                    }
                    String result = builder.toString();
                    System.out.print("result ------------------:  "+result);

            }catch(Exception e){
                e.printStackTrace();
            }

`

但得到例外

Caused by: java.io.IOException: error=2, No such file or directory
        at java.lang.UNIXProcess.forkAndExec(Native Method)
        at java.lang.UNIXProcess.<init>(UNIXProcess.java:247)
        at java.lang.ProcessImpl.start(ProcessImpl.java:134)
        at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)

`

鑒於應用程序和身份驗證服務在Ubuntu上的docker-container內部運行,並且當我手動進入應用程序docker-container並執行上述curl命令時,可以正常工作。 請幫忙

從流程構建器文檔中:

https://docs.oracle.com/javase/7/docs/api/java/lang/ProcessBuilder.html

正確的方法是使用作為單獨字符串傳遞的參數來調用它,否則它將不起作用。 同樣,為了在linux中運行curl或在Windows中運行dir等系統命令,您需要調用命令解釋程序-sh for linux。 因此,您的命令應如下所示:

ProcessBuilder process = new ProcessBuilder("sh", "-c","curl","--cert", certificationPath......); 

或者您可以嘗試:

Runtime.getRuntime().exec(command);  //Here you pass the whole command as a string  

您是否可以嘗試在root用戶下或使用sudo java運行JVM。...它可能沒有足夠的JVM權限。

暫無
暫無

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

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