您的位置:首页 > 运维架构 > Linux

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

2017-09-17 00:00 639 查看
这两天在做项目时,需要用到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")

要写绝对路径!

这样子就解决了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐