首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java.io.IOException: error=2,在java中执行curl时没有这样的文件或目录

Java.io.IOException: error=2,在java中执行curl时没有这样的文件或目录
EN

Stack Overflow用户
提问于 2018-07-31 19:30:35
回答 2查看 1K关注 0票数 0

我使用curl进行基于证书的/x509身份验证`

代码语言:javascript
复制
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();
            }

`

但是获取异常`

代码语言:javascript
复制
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命令时,它们工作得很好。请帮帮忙

EN

回答 2

Stack Overflow用户

发布于 2018-07-31 19:33:51

从流程构建器文档:

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

正确的方法是使用作为单独字符串传递的参数来调用它,否则它将无法工作。此外,为了运行像linux中的curl或windows中的dir这样的系统命令,您需要将命令叫做解释器- sh。因此,您的命令应该类似于:

代码语言:javascript
复制
ProcessBuilder process = new ProcessBuilder("sh", "-c","curl","--cert", certificationPath......); 

或者您可以尝试:

代码语言:javascript
复制
Runtime.getRuntime().exec(command);  //Here you pass the whole command as a string  
票数 0
EN

Stack Overflow用户

发布于 2018-07-31 20:17:43

您是否可以尝试在root或sudo java下运行JVM ...它可能没有足够的JVM权限。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51612350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档