3

使用XComponentContext xContext = Bootstrap.bootstrap(),我试图通过 Java 获取 OpenOffice 的远程办公组件上下文。但它引发异常 no office executable found

我已经在 CLASSPATH 中指定了 OpenOffice 程序目录的路径,但是我得到了这个异常。我该如何解决这个问题?

4

4 回答 4

3

我知道已经晚了 7 年,但我在尝试解决同样的问题时遇到了这个问题;即编译并运行一个简短的 Java 程序来启动,然后使用 Bootstrap.bootstrap() 方法连接到一个无头 LibreOffice / OpenOffice 进程。如果在 Eclipse 中编译和运行它会起作用,但是当我尝试从命令行执行它时,我得到了“找不到办公室可执行文件!” 错误。最终对我有用的是将office可执行文件(/usr/lib/libreoffice/program/)的路径添加到除了库之外的类路径;juh.jar、jurt.jar、ridl.jar、unoil.jar 和 unoloader.jar。仅在运行程序时才需要这样做,而不是在编译时。那是:

编译:

javac -classpath '.:/usr/lib/libreoffice/program/classes/juh.jar:/usr/lib/libreoffice/program/classes/jurt.jar:/usr/lib/libreoffice/program/classes/ridl.jar:/usr/lib/libreoffice/program/classes/unoil.jar:/usr/lib/libreoffice/program/classes/unoloader.jar' MyProg.java

跑步:

java -classpath '.:/usr/lib/libreoffice/program/:/usr/lib/libreoffice/program/classes/juh.jar:/usr/lib/libreoffice/program/classes/jurt.jar:/usr/lib/libreoffice/program/classes/ridl.jar:/usr/lib/libreoffice/program/classes/unoil.jar:/usr/lib/libreoffice/program/classes/unoloader.jar' MyProg

这对我有用,无需使用任何其他工具。

于 2019-12-14T17:59:02.597 回答
2

1) 从http://forum.openoffice.org/en/forum/download/file.php?id=836下载 bootstrapconnector.jar

2) String oooExeFolder = "C:/Program Files/OpenOffice.org 2.3/program/";

3) XComponentContext xContext = BootstrapSocketConnector.bootstrap(oooExeFolder);

来源表格查看http://forum.openoffice.org/en/forum/viewtopic.php?t=2520

于 2013-01-29T19:51:05.067 回答
0

您没有详细说明如何运行 openoffice/libreoffice,但我会试一试。

我最近也遇到了这个异常。我相信它与最新的 libreoffice(4.4?)和 java 7 一起使用。当我手动执行 libreoffice 然后与 Java 连接时,它起作用了。我们使用了一个脚本,该脚本首先运行 libreoffice,然后尝试多次连接。

原因: - 启动 libreoffice (writer) 时,它多次显示相同的错误消息,即找不到 java jre。当单击消息离开时,libreoffice 确实启动了,然后您可以通过 libreoffice 的菜单指定在哪里可以找到 jre。

另一个问题是 Windows 服务启动脚本的文件系统权限,它只是没有执行 libreoffice(在后台(我相信无头)),然后 JAVA 程序尝试连接。这是通过为 Windows 服务提供正确的凭据来解决的。

因此,在您可以连接到 libreoffice/openoffice 之前,您必须使用命令启动它。这可以在后台运行而无需在界面上显示 libreoffice。您必须查找 soffice.exe 的启动属性,并确保它由正确的用户启动。

于 2013-01-04T13:20:20.440 回答
0

试试这个“var xContext = Bootstrap.bootstrap();” 如果您使用 C# 框架 4.0 的 api(libreoffice 4.0 和 sdk 4.0)存在一个已知问题。如果您的问题仍然存在,您可以使用 api(libreoffice 3.6.6 和 sdk 3.6.6)我不知道 java 中是否有类似的东西,但无论如何您都可以尝试 :)

于 2013-04-26T16:40:03.493 回答