Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java.io.IOException:error=2,在Java中执行curl时没有这样的文件或目录_Java_Docker_Curl_X509certificate - Fatal编程技术网

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

Java.io.IOException:error=2,在Java中执行curl时没有这样的文件或目录,java,docker,curl,x509certificate,Java,Docker,Curl,X509certificate,我正在使用curl进行基于证书的/x509身份验证 ` ` 但有例外吗` 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.la

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

`

但有例外吗`

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)
原因:java.io.IOException:error=2,没有这样的文件或目录
位于java.lang.UNIXProcess.forkAndExec(本机方法)
位于java.lang.UNIXProcess(UNIXProcess.java:247)
在java.lang.ProcessImpl.start(ProcessImpl.java:134)处
位于java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
`

假设应用程序和身份验证服务在Ubuntu上的docker容器中运行,并且在我手动进入应用程序docker容器并执行上面的curl命令时工作正常。
请从process builder文档中获得帮助:

正确的方法是使用作为单独字符串传递的参数调用它,否则它将无法工作。此外,为了在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或sudojava下运行JVM。。。。 它可能没有足够的权限供JVM使用。

的可能重复项
Runtime.getRuntime().exec(command);  //Here you pass the whole command as a string