CreateProcess error=5, 拒绝访问。

CreateProcess error=5, 拒绝访问。

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

使用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)