java - 从小程序启动 OpenOffice

标签 java applet openoffice.org

我已经保存了这段代码,并且可以在命令行中正常工作...... 但是当我将其放入小程序中时,出现以下错误

com.sun.star.lang.IllegalArgumentException 在 com.sun.star.comp.bridgefactory.BridgeFactory.createBridge(BridgeFactory.java:158) 在 com.sun.star.comp.urlresolver.UrlResolver$_UrlResolver.resolve(UrlResolver.java:130)

有人能解决这个问题吗?在哪里可以找到 BridgeFactory 源代码?

   Runtime.getRuntime().exec("C:/Program Files/OpenOffice.org 3/program/soffice.exe -accept=socket,host=localhost,port=8100;urp;StarOffice.ServiceManager"); // oooUrlW - the url of soffice.exe
              Thread.sleep(5000);

              XComponentContext xLocalContext = com.sun.star.comp.helper.Bootstrap.createInitialComponentContext(null);
              XMultiComponentFactory xLocalServiceManager = xLocalContext.getServiceManager();
              Object urlResolver  = xLocalServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver",xLocalContext);
              XUnoUrlResolver xUnoUrlResolver = (XUnoUrlResolver) UnoRuntime.queryInterface(XUnoUrlResolver.class,urlResolver);

              Object initialObject = xUnoUrlResolver.resolve("uno:socket,host=localhost,port=8100;urp;StarOffice.ServiceManager");
              XPropertySet xPropertySet = (XPropertySet) UnoRuntime.queryInterface(XPropertySet.class,initialObject);
              XComponentContext remoteContext = (XComponentContext) UnoRuntime.queryInterface(XComponentContext.class, xPropertySet.getPropertyValue("DefaultContext"));

              XMultiComponentFactory remoteServiceManager = remoteContext.getServiceManager();
              Object desktop = remoteServiceManager.createInstanceWithContext("com.sun.star.frame.Desktop", remoteContext);

                 xDesktop =(XDesktop) UnoRuntime.queryInterface( XDesktop.class, desktop);
 XComponent xCalcComponent =
           newDocComponent(xDesktop, "scalc");
           XSpreadsheetDocument xCalcDocument =
                      (XSpreadsheetDocument)UnoRuntime.queryInterface(
                                           XSpreadsheetDocument.class, xCalcComponent);
           XSpreadsheets a=xCalcDocument.getSheets();
           Object o = a.getByName("Sheet1");

           XSpreadsheet sheet = (XSpreadsheet)UnoRuntime.queryInterface(
                    XSpreadsheet.class, o);


           XCell jjjj = sheet.getCellByPosition(0, 0);
           jjjj.setFormula("Some Text ");

最佳答案

您的小程序已签名吗?否则我认为你不能打电话

Runtime.getRuntime().exec("C:/Program Files/OpenOffice.org 3/program/soffice.exe-accept=socket,host=localhost,port=8100;urp;StarOffice.ServiceManager");

来自小程序。

关于java - 从小程序启动 OpenOffice,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1142683/

相关文章:

java - 如何为使用 AndroidSchedulers.mainThread() 的函数编写测试;来自 RxAndroid

java - 如何配置GC不让世界停止?

java - Webkit 在从 JAR 读取之前尝试下载 Java applet 类

java - 无法在 Eclipse 中关闭小程序

python - 如何配置 PyCharm 开发 LibreOffice Python 宏?

java - 在 servlet 中创建 json 对象

java - 使用 Java 中的有限库创建 Excel 文件

java - 在 JApplet 中调用 getParameter() 时出现 InvokingTargetException

r - 如何从 R 生成文档(.rtf、.doc、.odt)

java - 寻找用于从 ppt、pptx、doc、docx 文件中解析和提取对象的库