Начало работы с UNO и Java с Open/LibreOffice

Я только начал разрабатывать проект Java, используя LibreOffice 4.0.1 UNO SDK, аааа... Я почти застрял в самом начале. Я думаю, то же самое можно было бы применить, если бы я использовал 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 и настроены переменные среды.

Я что-то пропустил?

Изменить: я использую 64-разрядную версию Windows 7. Возможно, это как-то связано с проблемой.


person MaxArt    schedule 19.03.2013    source источник


Ответы (5)


Ну и все, библиотека jpipe.dll не найдена в каталогах, указанных в переменной окружения PATH. Мне пришлось добавить к этому путь 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. чтобы заставить его работать.

Мужчина. Я могу обойтись без некоторого удобства интерфейса, но это просто излишне усложняет жизнь разработчику!

Вот почему программное обеспечение с открытым исходным кодом иногда отстой.

person MaxArt    schedule 21.03.2013
comment
добавить /usr/lib/ure/lib в путь к классам (для libjpipe.so) в Linux - person Jens Jensen; 05.11.2014
comment
Протестировано на: Linux Mint 18.3 Sylvia. Добавление этого параметра решает проблему: -Djava.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib:/usr/lib/libreoffice/program/ - person Marcin Gołębski; 11.09.2020

Если вы используете 32-разрядную версию libreoffice, вам нужно переключить 32-разрядную версию jdk для работы. В противном случае загрузите последнюю версию libreoffice 64-разрядной версии.

person Vidhya    schedule 23.07.2015

Попробуйте связать библиотеку libjpipe.so с каталогом lib внутри вашего проекта:

ln -s /usr/lib/libreoffice/program/libjpipe.so your_project/lib/
person panticz    schedule 21.11.2019

Для Ubuntu 18.04 мне удалось решить проблему, добавив libjpipe.so в этот файл местоположения: ///usr/lib/jni/libjpipe.so.

Вы можете получить этот файл из /usr/lib/libreoffice/program/libjpipe.so, если у вас установлен libre office.

Это должно решить проблему.

person Gru    schedule 11.05.2020

В 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
person RajV    schedule 20.05.2020