java Jodconverter 异常:无法在 Windows 中启动和连接

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/12910548/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-31 10:44:53  来源:igfitidea点击:

Jodconverter exception: failed to start and connect in windows

javaexceptionjodconverter

提问by Sarika.S

Why I get the following exception..

为什么我得到以下异常..

I stuck with this issue with several days..

我坚持了几天这个问题..

Please help me..

请帮我..

INFO: ProcessManager implementation is WindowsProcessManager

org.artofsolving.jodconverter.office.OfficeException: failed to start and connect

                at org.artofsolving.jodconverter.office.ManagedOfficeProcess.startAndWait(ManagedOfficeProcess.java:61)

                at org.artofsolving.jodconverter.office.PooledOfficeManager.start(PooledOfficeManager.java:102)

                at org.artofsolving.jodconverter.office.ProcessPoolOfficeManager.start(ProcessPoolOfficeManager.java:59)

                at com.hiringsteps.ats.util.service.impl.UtilService.convertWord2Pdf(UtilService.java:132)

                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

                at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

                at java.lang.reflect.Method.invoke(Method.java:597)

                at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318)

                at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)

                at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)

                at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)

                at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)

                at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:90)

                at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)

                at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)

                at $Proxy51.convertWord2Pdf(Unknown Source)

                at com.hiringsteps.ats.applicant.facade.impl.ApplicantFacade.convert2PdfNHighlight(ApplicantFacade.java:553)

                at com.hiringsteps.ats.applicant.facade.impl.ApplicantFacade.register(ApplicantFacade.java:433)

                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

                at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

                at java.lang.reflect.Method.invoke(Method.java:597)

                at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:318)

                at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)

                at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)

                at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)

                at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)

                at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:90)

                at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)

                at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)

                at $Proxy65.register(Unknown Source)

                at com.hiringsteps.ats.applicant.dwr.impl.ApplicantDwr.register(ApplicantDwr.java:107)

                at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

                at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

                at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

                at java.lang.reflect.Method.invoke(Method.java:597)

                at org.directwebremoting.impl.ExecuteAjaxFilter.doFilter(ExecuteAjaxFilter.java:34)

                at org.directwebremoting.impl.DefaultRemoter.doFilter(DefaultRemoter.java:472)

                at org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:475)

                at org.directwebremoting.impl.DefaultRemoter.execute(DefaultRemoter.java:323)

                at org.directwebremoting.servlet.PlainCallHandler.handle(PlainCallHandler.java:52)

                at org.directwebremoting.servlet.UrlProcessor.handle(UrlProcessor.java:101)

                at org.directwebremoting.spring.DwrController.handleRequestInternal(DwrController.java:256)

                at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)

                at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)

                at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:923)

                at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)

                at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)

                at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:789)

                at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)

                at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)

                at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)

                at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)

                at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)

                at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)

                at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726)

                at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)

                at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206)

                at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)

                at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)

                at org.mortbay.jetty.Server.handle(Server.java:324)

                at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)

                at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:842)

                at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:648)

                at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)

                at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)

                at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)

                at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450)

Caused by: java.util.concurrent.ExecutionException: org.artofsolving.jodconverter.office.OfficeException: could not establish connection

                at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)

                at java.util.concurrent.FutureTask.get(FutureTask.java:83)

                at org.artofsolving.jodconverter.office.ManagedOfficeProcess.startAndWait(ManagedOfficeProcess.java:59)

                ... 68 more

MY code is

我的代码是

public  void convertWord2Pdf(String inputPath, String outputPath ) {    
        try {    
            File inputFile = new File(inputPath);

            File outputFile = new File(outputPath);

            OfficeManager officeManager = new DefaultOfficeManagerConfiguration().buildOfficeManager();

            officeManager.start(); // may tweak the start and stop code to appear elsewhere for additional efficiency

            DocumentFormat docFormat = new DocumentFormat("Portable Document Format", "pdf", "application/pdf");

            Map map = new HashMap();

            map.put("FilterName", "writer_pdf_Export");

            PropertyValue[] aFilterData = new PropertyValue[1];

            aFilterData[0] = new PropertyValue();

            aFilterData[0].Name = "SelectPdfVersion";

            aFilterData[0].Value = 1;

            map.put("FilterData", aFilterData);

            docFormat.setStoreProperties(DocumentFamily.TEXT, map);

            OfficeDocumentConverter docConverter = new OfficeDocumentConverter(officeManager);

            docConverter.convert(inputFile, outputFile, docFormat);

            officeManager.stop(); 

        } catch (Throwable e) {          

            e.printStackTrace();    
        }
    }  

And in my pom.xml

在我的 pom.xml 中

<dependency>

        <groupId>org.artofsolving.jodconverter</groupId>

        <artifactId>jodconverter-core</artifactId>

        <version>3.0-beta-3</version>

</dependency>

Earlier my code was

早些时候我的代码是

public  void convertWord2Pdf(String inputPath, String outputPath ) {  
        try {
            File inputFile = new File(inputPath);
            File outputFile = new File(outputPath);           

            OpenOfficeConnection connection = new SocketOpenOfficeConnection(8100);

            connection.connect();         

            DocumentConverter converter = new OpenOfficeDocumentConverter(connection);

            converter.convert(inputFile, outputFile);

            //close the connection

            connection.disconnect();
        }

        catch (Throwable e) { 
            e.printStackTrace();
        }  
    }  

And in pom.xml

在 pom.xml 中

<dependency>

    <groupId>com.artofsolving</groupId>

    <artifactId>jodconverter</artifactId>

    <version>2.2.2</version>           

</dependency>

回答by peshkira

Your code looks ok, but it seems that the open office service is not running, so the JODConverter cannot connect to it, thus the exception (org.artofsolving.jodconverter.office.OfficeException: failed to start and connect). If it is running, probably the port is wrong.

您的代码看起来没问题,但似乎没有运行开放式办公服务,因此 JODConverter 无法连接到它,因此出现异常 ( org.artofsolving.jodconverter.office.OfficeException: failed to start and connect)。如果它正在运行,可能是端口错误。

You can take a look at your ports in use and try to figure out whether it is really operational or not.

您可以查看正在使用的端口,并尝试确定它是否真的可以运行。

From this source: http://www.artofsolving.com/node/10

来自这个来源:http: //www.artofsolving.com/node/10

JODConverter needs to connect to a running OpenOffice.org instance in order to perform the document conversions.

This is different from starting the OpenOffice.org program as you would normally do. OpenOffice.org can be configured to run as a service and listen for commands on a TCP port; there are a few ways to accomplish this but the simplest one is to start it from the command line with the following options:

JODConverter 需要连接到正在运行的 OpenOffice.org 实例才能执行文档转换。

这与通常启动 OpenOffice.org 程序不同。OpenOffice.org 可以配置为作为服务运行并侦听 TCP 端口上的命令;有几种方法可以完成此操作,但最简单的方法是使用以下选项从命令行启动它:

You can start the service with:

您可以通过以下方式启动服务:

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

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

For help under windows look at:

windows下的帮助请看: