前の関連記事: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.class54行目のオプションと引数を見やすくするために改行を入れてみます。
"/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.classThumbs.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/ThumbsUNOコンポーネントの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のオプション一覧
0 件のコメント:
コメントを投稿