java代码启动cmd执行命令来开启服务出现无法连接的问题

发布于 2022-09-05 03:59:40 字数 1675 浏览 52 评论 0

我想使用openoffice的格式转换功能,需要先开启openoffice的服务,当我手动敲入命令的时候,是可以运行起来的,但是通过Java代码执行却出现拒绝连接的问题,请帮我看看怎么回事

public static String soffice_host = "127.0.0.1";
public static String soffice_port = "8100";
public static Process pro = null;
String commands = "cmd.exe /C C:\\Program Files (x86)\\OpenOffice 4\\program\\startOpenoffice.bat";
System.out.println(commands);
//执行的命令:cmd.exe /C C:\Program Files (x86)\OpenOffice 4\program\startOpenoffice.bat
pro = Runtime.getRuntime().exec(commands);
connection = new SocketOpenOfficeConnection(soffice_host, Integer.parseInt(soffice_port));
System.out.println("获得连接"+connection);
//获得连接com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection@7002ee59
connection.connect();

startOpenoffice.bat:

soffice -headless  -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard 

错误信息:

获得连接com.artofsolving.jodconverter.openoffice.connection.SocketOpenOfficeConnection@7002ee59
09:07:58.807 [main] DEBUG c.a.j.o.c.SocketOpenOfficeConnection - connecting
java.net.ConnectException: connection failed: socket,host=127.0.0.1,port=8100,tcpNoDelay=1: java.net.ConnectException: Connection refused: connect
    at com.artofsolving.jodconverter.openoffice.connection.AbstractOpenOfficeConnection.connect(AbstractOpenOfficeConnection.java:79)
    at com.fdauto.preview.read.ToWord.doc2Html(ToWord.java:82)
    at com.fdauto.preview.read.ToWord.main(ToWord.java:103)

手动敲命令:

cd C:\Program Files (x86)\OpenOffice 4\program
soffice -headless  -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

攀登最高峰 2022-09-12 03:59:40

通过查找资料发现一个新的包jodconverter-core,其中有个OfficeManager类可以实现另外的连接方式,我的问题是启动一次后,就可以连接,所以刚好可以,只能暂时这样解决了。

饮惑 2022-09-12 03:59:40

换种方法执行cmd:

 ProcessBuilder builder = new ProcessBuilder(
            "cmd.exe", "/c", "C:\\Program Files (x86)\\OpenOffice 4\\program\\startOpenoffice.bat");
        builder.redirectErrorStream(true);
        Process p = builder.start();
        BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
        String line;
        while (true) {
            line = r.readLine();
            if (line == null) { break; }
            System.out.println(line);
        }
一身骄傲 2022-09-12 03:59:40

图片描述

===========================================
String OpenOffice_HOME = "C:\Program Files (x86)\OpenOffice 4";// 这里是OpenOffice的安装目录,    

            if (OpenOffice_HOME.charAt(OpenOffice_HOME.length() - 1) != '\\') {
            OpenOffice_HOME += "\\";
            }
            Process pro = null;
            try {
                String command = OpenOffice_HOME  
                        + "program\\soffice.exe -headless -accept=\"socket,host=127.0.0.1,port=8100;urp;\"";
                pro = Runtime.getRuntime().exec(command);    //启动openoffice服务
                OpenOfficeConnection connection = new SocketOpenOfficeConnection("127.0.0.1", 8100);
                connection.connect();
                DocumentConverter converter = new OpenOfficeDocumentConverter(connection); 
                converter.convert(SourceFile, HtmlFile);
                HtmlFile.createNewFile();
                connection.disconnect();  
            } catch (java.net.ConnectException e) {
                System.out.println(e.getMessage());
                System.out.println("OpenOffice服务未启动");
            } catch (com.artofsolving.jodconverter.openoffice.connection.OpenOfficeException e) {
                e.printStackTrace();
                System.out.println("读取文件失败");
            } catch (Exception e){
                e.printStackTrace();
               System.out.println("其他异常");
            }finally{
                pro.destroy();  //销毁openoffice服务
            }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文