centos下java调用命令报 java.io.IOException: error=2, No such file or directory的错误

前端之家收集整理的这篇文章主要介绍了centos下java调用命令报 java.io.IOException: error=2, No such file or directory的错误前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

这两天在做项目时,需要用到pdf2htmlEX将pdf文件转成html供移动端用户浏览,以及使用ffmpeg截取视频封面图,这两个库安装下来大概花去了一天多时间,因为之前没接触过。这里看pdf转成html的示例:

Runtime rt = Runtime.getRuntime();
StringBuilder command = new StringBuilder();
command.append("/usr/local/bin/pdf2htmlEX").append(" ");
if(destDir!=null&&!"".equals(destDir.trim()))//生成文件存放位置,需要替换文件路径中的空格
    command.append("--dest-dir ").append(destDir.replace(" ","\" \"")).append(" ");
command.append("--optimize-text 1 ");//尽量减少用于文本的HTML元素的数目 (default: 0)
command.append("--process-outline 0 ");//html中显示链接:0——false,1——true
command.append("--font-format woff ");//嵌入html中的字体后缀(default ttf) ttf,otf,woff,svg
command.append(pdfFile.replace(" ","\" \"")).append(" ");//需要替换文件路径中的空格
if(htmlFileName!=null&&!"".equals(htmlFileName.trim())){
    command.append(htmlFileName);
    if(htmlFileName.indexOf(".html")==-1)
        command.append(".html");
}

这段代码是在linux上运行的,windows的写法差不多,这里只说centos下的。在执行这段代码后,控制台打印的语句是:

pdf2htmlEX --dest-dir /usr/local/tools/tomcat_1/webapps/ROOT//file/upload/backend/media --optimize-text 1 --process-outline 0 --font-format woff /usr/local/tools/tomcat_1/webapps/ROOT//file/upload/backend/media/054cc554-02ba-43e8-a78a-599ff0aafeb6.pdf 054cc554-02ba-43e8-a78a-599ff0aafeb6.html

但是却报了这样的错误:Caused by: java.io.IOException: error=2,No such file or directory

说是pdf2htmlEX不是文件或目录,但是在执行pdf2htmlEX -v的时候,打印了:

按道理是ok的啊,报错让人很郁闷。我尝试将

pdf2htmlEX --dest-dir /usr/local/tools/tomcat_1/webapps/ROOT//file/upload/backend/media --optimize-text 1 --process-outline 0 --font-format woff /usr/local/tools/tomcat_1/webapps/ROOT//file/upload/backend/media/054cc554-02ba-43e8-a78a-599ff0aafeb6.pdf 054cc554-02ba-43e8-a78a-599ff0aafeb6.html

这段命令拷贝到命令行下运行,结果:

成功运行,再看看HTML文件

确实也生成了!

那么问题来了,为什么命令行直接运行很ok,java调用执行的却不ok?

这里给出解决方法

第一步:

编辑/etc/profile文件,在最后加上

export LD_LIBRARY_PATH=/usr/local/lib
sudo ldconfig
因为pdf2htmlEX安装成功后的位置在/usr/local/lib下;

第二步:

修改java代码

command.append("/usr/local/bin/pdf2htmlEX")

要写绝对路径

这样子就解决了。

猜你在找的CentOS相关文章