繁体   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