openoffice4.1.5 connection refused
具体错误如下:
java.net.ConnectException:connectionfailed:socket,host=localhost,port=8100,tcpNoDelay=1:java.net.ConnectException:Connection refused: connect
at com.artofsolving.jodconverter.openoffice.connection.AbstractOpenOfficeConnection.connect(AbstractOpenOfficeConnection.java:79)
错误场景,Linux使用Runtime.getRuntime().exec()方法通过命令
/opt/openoffice4/program/soffice -headless -accept="socket,host=127.0.0.1,port=8100;urp;" -nofirststartwizard &
来启动openoffice,如果通过这个命令去启动openoffice服务器,然后马上又进行转换是会报拒绝连接的异常,但是手动启动openoffice又可以使用。
解决方法:
OpenOfficeConnection connection = new SocketOpenOfficeConnection("127.0.0.1",8100);
Thread th=new Thread(new Runnable() {
@Override
public void run() {
try {
System.out.println("开启连接");
connection.connect();
System.out.println("连接完成");
} catch (ConnectException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
try {
System.out.println("等待10秒");
Thread.sleep(10000);
System.out.println("启动线程");
th.start();
} catch (InterruptedException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
调用一个线程等待几秒钟再去连接openoffice,完美解决这个问题。
原因延伸:通过soffice命令启动openoffice,会发现有两个进程,一个是soffice,另一个是soffice.bin。初步认为是,通过代码启动openoffice,只是启动了soffice这个进程,就算是使用warfor(),也只能监听soffice这个进程,然而要连接openoffice需要等待soffice联动启动soffice.bin,才能连接。我这条路都没有通,你就要过身,肯定不允许你过去。