欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

CreateProcess error=5, 拒绝访问。

程序员文章站 2022-05-12 15:57:25
...

CreateProcess error=5, 拒绝访问。

使用JAVA的Runtime.getRuntime().exec()遇到的bug

今天在使用一个wkhtmltopdf工具的时候需要用到JAVA的一个方法,*Runtime.getRuntime()返回当前应用程序的Runtime对象,该对象的exec()方法指示Java虚拟机创建一个子进程执行指定的可执行程序,并返回与该子进程对应的Process对象实例。通过Process可以控制该子进程的执行或获取该子进程的信息。。。。。。。*附一个对此功能的介绍链接:Runtime.getRuntime().exec()
报错的代码时这样,猜测原因是文件夹访问不到,或者无法调用到命令。

public class WKTest {
    public static void main(String[] args) {
        String cmd = "D:/programfiles/wkhtmltopdf/bin --quality 75 https://www.nowcoder.com D:\\work\\wk-images/3.png";

        try{
            Runtime.getRuntime().exec(cmd);
            System.out.println("ok");
        }catch(IOException e){
            e.printStackTrace();
        }
    }
}

java.io.IOException: Cannot run program "D:/programfiles/wkhtmltopdf/bin": CreateProcess error=5, 拒绝访问。
	at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
	at java.lang.Runtime.exec(Runtime.java:620)
	at java.lang.Runtime.exec(Runtime.java:450)
	at java.lang.Runtime.exec(Runtime.java:347)
	at com.nowcoder.community.WKTest.main(WKTest.java:15)
Caused by: java.io.IOException: CreateProcess error=5, 拒绝访问。

在java中,RunTime.getRuntime().exec()实现了调用服务器命令脚本来执行功能需要。也就是说这行代码对文件夹是无法操作的,必须访问完文件夹中的脚本,我这里主要是调用一个.exe文件,修改如下:

public class WKTest {
    public static void main(String[] args) {
        String cmd = "D:/programfiles/wkhtmltopdf/bin/wkhtmltoimage.exe --quality 75 https://www.nowcoder.com D:\\work\\wk-images/3.png";

        try{
            Runtime.getRuntime().exec(cmd);
            System.out.println("ok");
        }catch(IOException e){
            e.printStackTrace();
        }
    }
}

测试正常:

ok

Process finished with exit code 0


相关标签: bug java

上一篇: CreateProcess

下一篇: CreateProcess