Question

I just started to develop a Java project using LibreOffice's 4.0.1 UNO SDK, aaaand... I'm pretty much stuck right at the beginning. I think the same can be applied if I used OpenOffice.org instead of LibreOffice, so any help is appreciated.

I'm using Eclipse Juno 4.2 and I created a "Hello World"-like project. I added the /program directory to the classpath (added as an external class folder), and right at the beginning this line of code

XComponentContext ctx = Bootstrap.bootstrap();

throws an UnsatisfiedLinkError exception with the following stack trace:

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)

There's even a try/catch surrounding the instruction but it's not triggered.

I can't find decent documentation about getting started with UNO, so I don't know what went wrong. The SDK is installed and the environment variables are configured.

Am I missing something?

Edit: I'using Windows 7 64 bit. Maybe this has something to do with the problem.

Was it helpful?

Solution

Well, that's it, the library jpipe.dll wasn't found in the directories listed in the PATH environment variable. I had to add the path LibreOffice 4.0/URE/bin to that.

Adding the path to the java.library.path wouldn't work.

So, after a very annoying SDK installation, which required a GNU make tool that I won't use and forced me to install MinGW, and a crappy zip tool that couldn't simply be found since the mirrors from info-zip.org (the source given by api.libreoffice.org) are all down, I still had these stupid and undocumented problems.

Once this was solved, the 64 bit thing was actually a problem, since jpipe.dll is a 32 bit only library and couldn't be loaded, so I had to switch to a 32 bit JDK/JRE in order to make it work.

Man. I can do without some interface user-friendliness, but this is just making the life of a developer unnecessarily hard!

This is why open source software sometimes sucks.

OTHER TIPS

If you are using 32 bit of libreoffice then the u need to switch 32 but of jdk to work.Otherwise download the latest version of libreoffice of 64bit

Try to link the libjpipe.so library to lib directory inside of your project:

ln -s /usr/lib/libreoffice/program/libjpipe.so your_project/lib/

For Ubuntu 18.04 I was able to solve the issue by adding libjpipe.so to this location file:///usr/lib/jni/libjpipe.so

You can get this file from /usr/lib/libreoffice/program/libjpipe.so if you have installed libre office.

This should solve the issue.

In MacOS the libpipe library is located at /Applications/LibreOffice.app/Contents/Frameworks/libjpipe.jnilib. So you need to run Java like this.

java -cp \
  '.:/Applications/LibreOffice.app/Contents/MacOS/:any-other-jars.jar' \
  -Djava.library.path=/Applications/LibreOffice.app/Contents/Frameworks \
   com.example.YourAppClass
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top