8

我刚开始使用 LibreOffice 的 4.0.1 UNO SDK 开发一个 Java 项目,aaaand...我一开始就被卡住了。我认为如果我使用 OpenOffice.org 而不是 LibreOffice,也可以应用同样的方法,因此感谢您提供任何帮助。

我正在使用 Eclipse Juno 4.2,并创建了一个类似“Hello World”的项目。我将/program目录添加到类路径(添加为外部类文件夹),并在这行代码的开头

XComponentContext ctx = Bootstrap.bootstrap();

UnsatisfiedLinkError使用以下堆栈跟踪引发异常:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no jpipe in java.library.path
    at java.lang.ClassLoader.loadLibrary(Unknown Source)
    at java.lang.Runtime.loadLibrary0(Unknown Source)
    at java.lang.System.loadLibrary(Unknown Source)
    at com.sun.star.lib.util.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:50)
    at com.sun.star.lib.connections.pipe.PipeConnection.<clinit>(PipeConnection.java:48)
    at com.sun.star.lib.connections.pipe.pipeConnector.connect(pipeConnector.java:110)
    at com.sun.star.comp.connections.Connector.connect(Connector.java:114)
    at com.sun.star.comp.urlresolver.UrlResolver$_UrlResolver.resolve(UrlResolver.java:108)
    at com.sun.star.comp.helper.Bootstrap.bootstrap(Bootstrap.java:301)
    at xx.test.unotest.UnoTest.main(UnoTest.java:16)

甚至还有一个try/catch指令周围,但它没有被触发。

我找不到关于开始使用 UNO 的合适文档,所以我不知道出了什么问题。安装 SDK 并配置环境变量。

我错过了什么吗?

编辑:我使用的是 Windows 7 64 位。也许这与问题有关。

4

5 回答 5

6

PATH好吧,就是这样,在环境变量中列出的目录中找不到库 jpipe.dll 。我必须向其中添加路径 LibreOffice 4.0/URE/bin。

添加路径java.library.path将不起作用。

因此,在安装了一个非常烦人的 SDK 之后,它需要一个我不会使用的 GNU make 工具并强迫我安装 MinGW,以及一个糟糕的 zip 工具,因为来自 info-zip.org 的镜像( api.libreoffice.org 提供的源代码都已关闭,我仍然遇到这些愚蠢和无证的问题。

一旦解决了这个问题,64 位的东西实际上是一个问题,因为 jpipe.dll 是一个 32 位的库,无法加载,所以我必须切换到 32 位的 JDK/JRE 才能使其工作。

男人。我可以不用一些用户友好的界面,但这只是让开发人员的生活变得不必要地困难!

这就是为什么开源软件有时很糟糕的原因。

于 2013-03-21T10:54:52.097 回答
2

如果您使用的是 32 位的 libreoffice,那么您需要切换 32 位但 jdk 才能工作。否则请下载最新版本的 64 位 libreoffice

于 2015-07-23T08:42:25.180 回答
0

尝试将 libjpipe.so 库链接到lib项目内的目录:

ln -s /usr/lib/libreoffice/program/libjpipe.so your_project/lib/
于 2019-11-21T10:46:11.240 回答
0

对于 Ubuntu 18.04,我可以通过将libjpipe.so添加到此位置 file:///usr/lib/jni/libjpipe.so来解决问题

如果你安装了 libre office,你可以从 /usr/lib/libreoffice/program/libjpipe.so 获取这个文件。

这应该可以解决问题。

于 2020-05-11T06:05:52.420 回答
0

在 MacOS 中,libpipe 库位于/Applications/LibreOffice.app/Contents/Frameworks/libjpipe.jnilib. 所以你需要像这样运行Java。

java -cp \
  '.:/Applications/LibreOffice.app/Contents/MacOS/:any-other-jars.jar' \
  -Djava.library.path=/Applications/LibreOffice.app/Contents/Frameworks \
   com.example.YourAppClass
于 2020-05-20T17:29:20.257 回答