LibreOffice(68)Writing UNO componentsのThumbs Exampleその4

2015-02-15

旧ブログ

t f B! P L

前の関連記事:LibreOffice(67)Writing UNO componentsのThumbs Exampleその3


前回は作成したUNO Javaコンポーネントをoxtファイルにして拡張機能としてLibreOfficeに登録しました。今度はLiboreOfficeの外からJavaのBootstrapでLiboreOfficeを起動して自作のUNOコンポーネントをインスタンス化しています。

違いはサービスの実装classとjavamakerで作ったIDLのクラスファイルをjarに追加すること


LibreOffice(61)linuxBeanでJavaの例をmakeのFirstStepsの例のjarファイルとの違いは、新しく作ったサービスの実装ファイルThumbs.classとそのIDLファイルをjavamakerでclassファイルに変換したXImageShrink.class、XImageShrinkFilter.class、ImageShrink.classをパッケージどおりjarファイルに含めていることです。
mkdir -p /home/pq/libreoffice4.3_sdk/LINUXexample.out/class/ComponentThumbsExample
mkdir -p /home/pq/libreoffice4.3_sdk/LINUXexample.out/class/ComponentThumbsExample/org/openoffice/comp/test
"/usr/bin/javac"  -classpath "/opt/libreoffice4.3/ure-link/share/java/juh.jar:/opt/libreoffice4.3/ure-link/share/java/jurt.jar:/opt/libreoffice4.3/ure-link/share/java/ridl.jar:/opt/libreoffice4.3/ure-link/share/java/unoloader.jar:/opt/libreoffice4.3/sdk/../program/classes/unoil.jar::/home/pq/libreoffice4.3_sdk/LINUXexample.out/class/ComponentThumbsExample" -d /home/pq/libreoffice4.3_sdk/LINUXexample.out/class/ComponentThumbsExample Thumbs.java
まずはFirstStepsの例と同じようにJava UNO Runtime(jurt.jarはこれの頭字語だったといまさら気づく)を起動するのに必要なjuh.jar、jurt.jar、ridl.jar、unoloader.jar、unoil.jarをクラスパスに指定してThumbs.javaをコンパイルしています。

Thumbs.javaのあるフォルダもクラスパスに指定しているのは-sourcepathの代わりと思うのですが、この区切りだけがダブルコロンになっているのか不思議ですね。どうも単にMakefileのルールの書き方の影響によるだけのことのようですけど。
mkdir -p /home/pq/libreoffice4.3_sdk/LINUXexample.out/class/ComponentThumbsExample && rm -f /home/pq/libreoffice4.3_sdk/LINUXexample.out/class/ComponentThumbsExample/Thumbs.jar
"/usr/bin/jar" cvfm /home/pq/libreoffice4.3_sdk/LINUXexample.out/class/ComponentThumbsExample/Thumbs.jar /home/pq/libreoffice4.3_sdk/LINUXexample.out/class/ComponentThumbsExample/Thumbs.mf -C /home/pq/libreoffice4.3_sdk/LINUXexample.out/class/ComponentThumbsExample org/openoffice/comp/test/Thumbs.class -C /home/pq/libreoffice4.3_sdk/LINUXexample.out/class/ComponentThumbsExample org/openoffice/test/XImageShrink.class -C /home/pq/libreoffice4.3_sdk/LINUXexample.out/class/ComponentThumbsExample org/openoffice/test/XImageShrinkFilter.class -C /home/pq/libreoffice4.3_sdk/LINUXexample.out/class/ComponentThumbsExample org/openoffice/test/ImageShrink.class
54行目のオプションと引数を見やすくするために改行を入れてみます。
"/usr/bin/jar" cvfm 
/home/pq/libreoffice4.3_sdk/LINUXexample.out/class/ComponentThumbsExample/Thumbs.jar 
/home/pq/libreoffice4.3_sdk/LINUXexample.out/class/ComponentThumbsExample/Thumbs.mf 
-C /home/pq/libreoffice4.3_sdk/LINUXexample.out/class/ComponentThumbsExample org/openoffice/comp/test/Thumbs.class 
-C /home/pq/libreoffice4.3_sdk/LINUXexample.out/class/ComponentThumbsExample org/openoffice/test/XImageShrink.class 
-C /home/pq/libreoffice4.3_sdk/LINUXexample.out/class/ComponentThumbsExample org/openoffice/test/XImageShrinkFilter.class 
-C /home/pq/libreoffice4.3_sdk/LINUXexample.out/class/ComponentThumbsExample org/openoffice/test/ImageShrink.class
Thumbs.jarにThumbs.classに加えてサービスの実装ファイルThumbs.classとそのIDLファイルをjavamakerでclassファイルに変換したXImageShrink.class、XImageShrinkFilter.class、ImageShrink.classを追加しています。

マニフェストファイルのThumbs.mfはFisrtStepsの例と同じ形式です。
"/usr/bin/jar" uvf /home/pq/libreoffice4.3_sdk/LINUXexample.out/class/ComponentThumbsExample/Thumbs.jar -C ../../../../../../../../classes 'com/sun/star/lib/loader/Loader.class' -C ../../../../../../../../classes 'com/sun/star/lib/loader/Loader$Drain.class' -C ../../../../../../../../classes 'com/sun/star/lib/loader/Loader$CustomURLClassLoader.class' -C ../../../../../../../../classes 'com/sun/star/lib/loader/Loader$Drain.class' -C ../../../../../../../../classes 'com/sun/star/lib/loader/InstallationFinder.class' -C ../../../../../../../../classes 'com/sun/star/lib/loader/InstallationFinder$StreamGobbler.class' -C ../../../../../../../../classes 'com/sun/star/lib/loader/WinRegKey.class' -C ../../../../../../../../classes 'com/sun/star/lib/loader/WinRegKeyException.class' -C ../../../../../../../../classes 'win/unowinreg.dll' 
これはFirstStepsの例と同じです。

単にUNO IDLタイプclassのファイルと実装classファイルを追加するだけでできました。
--------------------------------------------------------------------------------
Please use one of the following command to execute the example!
-
make Thumbs.run
--------
The ImageShrink Java component was installed if SDK_AUTO_DEPLOYMENT = YES.
You can use this component inside your office installation, see the example
description.
--------------------------------------------------------------------------------
make Thumbs.runを実行してみます。
pq@linuxBean:/opt/libreoffice4.3/sdk/examples/DevelopersGuide/Components/Thumbs$ make Thumbs.run
"/usr/bin/java"  -Dcom.sun.star.lib.loader.unopath="/opt/libreoffice4.3/sdk/../program" -jar /home/pq/libreoffice4.3_sdk/LINUXexample.out/class/ComponentThumbsExample/Thumbs.jar
Connected to a running office ...
CO> Listening for transport dt_socket at address: 8000
ImageShrink component successfully instantiated
set SourceDrectory ...
source Directory = /opt/libreoffice4.3/sdk/examples/DevelopersGuide/Components/Thumbs
UNOコンポーネントのorg.openoffice.test.ImageShrinkサービスをうまくインスタンス化できました。

Makefileの変数をウォッチしたい


DebuggingにはNetBenasの拡張機能でMakefileが扱えると書いてあるのですがよくわかりませんでした。
(2015.11.7追記。Makeのデバッガを見つけました。linuxBean14.04(30)GNU Make Debugger, Remake:その1へ。)


とりあえずC/C++プラグインをインストールしてみるとMakefileの中身に色が付くようになりました。

Makefileを右クリックでターゲットを実行するメニューもでてきますが、LibreOfficeの例の場合は環境変数を設定しないといけませんので実行できません。

Makefileにでてくる変数の中身をウォッチしたかったのですが方法はないようです。

makeの-p(--print-data-base)オプションで一応変数の中を確認できないこともありませんでした。

すごくわかりにくいうえ、最後までMakefileが実行されませんでしたけど。

make -p >& ~/libreoffice4.3_sdk/LINUXexample.out/mylog

このコマンドで~/libreoffice4.3_sdk/LINUXexample.out/mylogファイルに結果を出力しました。

参考にしたサイト


makeのオプション一覧

ブログ検索 by Blogger

Translate

最近のコメント

Created by Calendar Gadget

QooQ