Getting started with UNO and Java with Open/LibreOffice

eclipse, java, libreoffice, openoffice.org, uno

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.

Problem

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.

Original source