前の関連記事:LibreOffice(63)FirstStepsの例をNetBeansでビルドする
とりあえずデベロッパーズガイドのJavaの例を全部動かして見ましょう。次は第2章にあたるProfessional UNOです。
第2章Professional UNOには4つの実行可能なJavaの例が付属
UrlResolver Importing a UNO Object
ConnectionAwareClient Example: A Connection Aware Client
MyUnoObject Differences Between the Lifetime of C++ and Java ObjectsWiki
SimpleBootstrap_java.java Transparent Use of Office UNO Components
それぞれ該当するデベロッパーズガイドへのリンクを探して出現順に並べました。
何をする例なのかはLibreOffice 4.3 SDK - Developer's Guide Examplesに概略一覧があります。
順番に動かしてみます。
UrlResolver LibreOfficeとソケット通信をする
LibreOffice(62)Javaの例をNetBeansでブレークポイントを設定すると同様の手順で起動できます。
(これ以降もとくに記載がない限り同様の手順です。ちなみに動かしてみただけでデベロッパーズガイドはまだ理解していないので感想は間違っているかもしれません。)
run: usage: UrlResolver uno-url uno-url The uno-url identifying the object to be imported, for instance uno:socket,host=localhost,port=2083;urp;StarOffice.ServiceManager (use " on unix shells to avoid ;-problems Java Result: 1 ビルド成功(合計時間: 0秒)NetBeansの出力コンソールにこのようにでてくるだけです。
LibreOffice(61)linuxBeanでJavaの例をmakeでやったようにmakeでビルドしてみます。
-------------------------------------------------------------------------------- Note: For these examples you need a running office listening on port 2083. Before you run these examples you have to start your office with - soffice "--accept=socket,host=localhost,port=2083;urp;StarOffice.ServiceManager" ----- Please use one of the following commands to execute the examples! - make ConnectionAwareClient.run make UrlResolver.run --------------------------------------------------------------------------------linuxBean(13)LibreOfficeとPyCharm4の連携設定でやったようにポート番号をそろえてLibreOfficeを起動しないといけないようです。
デベロッパーズガイドを読むよりmakeするほうが例の使い方はわかりやすいですね。
linuxBeanのメニューから実行。
libreoffice4.3 "--accept=socket,host=localhost,port=2083;urp;StarOffice.ServiceManager"
pq@linuxBean:/opt/libreoffice4.3/sdk/examples/DevelopersGuide/ProfUNO/InterprocessConn$ make UrlResolver.run "/usr/bin/java" -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/ProfUNOInterprocessExamples" UrlResolver "uno:socket,host=localhost,port=2083;urp;StarOffice.ServiceManager" initial object successfully retrieved接続成功とでてきましたね。
pq@linuxBean:/opt/libreoffice4.3/sdk/examples/DevelopersGuide/ProfUNO/InterprocessConn$ make UrlResolver.run "/usr/bin/java" -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/ProfUNOInterprocessExamples" UrlResolver "uno:socket,host=localhost,port=2083;urp;StarOffice.ServiceManager" Couldn't connect to remote server java.net.ConnectException: 接続を拒否されました
ソケット接続を受け付けていない状態ですと接続を拒否されました、と反応があります。
NetBeansから実行して同じような結果を得るためにはプロジェクトのプロパティの引数にuno-urlを設定します。
"uno:socket,host=localhost,port=2083;urp;StarOffice.ServiceManager"
NetBeansでも同じ結果が得られましたね。
ConnectionAwareClient LibreOfficeとの通信状態を表示する
先ほどのUrlResolverと同じフォルダにあるのでNetBeansで実行前にプロジェクトプロパティでメインクラスに忘れずに切り替えておきます。
すでにuno-urlをプロジェクトプロパティで引数に設定してあるはずですので、実行→プロジェクト(ProfUNO_InterprocessConn)を実行、とします。
すると左上に小さなウィンドウがでてきました。
libreoffice4.3 "--accept=socket,host=localhost,port=2083;urp;StarOffice.ServiceManager"
これでLibreOfficeをソケット通信の状態で起動した状態で「New writer」ボタンをクリックします。
Writerが起動して表示が「connected」に表示が変わりました。
Writerを終了するとまた「disconnected」に戻りました。
「New calc」ボタンでも同様の動作をします。
MyUnoObject JavaとC++のUNOオブジェクトの寿命の比較
これをmakeすると「gcc: error trying to exec 'cc1plus': execvp: そのようなファイルやディレクトリはありません」といわれて止まってしまいました。
どうやらこれはC++コンパイラーがインストールされていないときにでるエラーのようです。
LibreOffice 4.3 SDK - Installation Guide
SDKのインストールガイドをみるとC++コンパイラはオプションになっていますね。
だからLibreOffice(61)linuxBeanでJavaの例をmakeで環境設定したときにインストールを促されなかったのですね。
インストールガイドにはLinux GNU C++ compiler, gcc version 4.0.1と書いてあります。
linuxBean12.04のSynapticパッケージマネージャで調べてみるとすでにインストールされているgccは4.6でした。
といことでg++-4.6をインストールしようとしたのですが、linux-libc-devの取得に失敗してインストールできませんでした。
アンインストールもできなくなって泥沼へ、、、
結局Synapticパッケージマネージャの「再読込」ボタンをクリックしてパッケージ情報をダウンロードしたあとに、g++を選択してインストールしたらうまくいきました。
g++を選択すると自動的に最適なバージョンをインストールしてくれるようでg++-4.6がインストールされていました。
-------------------------------------------------------------------------------- Please use one of the following commands to execute the examples! - make MyUnoObject.run make ProfUnoLifetime.runexe -------------------------------------------------------------------------------- pq@linuxBean:/opt/libreoffice4.3/sdk/examples/DevelopersGuide/ProfUNO/Lifetime$ make MyUnoObject.run "/usr/bin/java" -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/ProfUnoLifetime" MyUnoObject finalizer called leaving pq@linuxBean:/opt/libreoffice4.3/sdk/examples/DevelopersGuide/ProfUNO/Lifetime$ make ProfUnoLifetime.runexe cd /home/pq/libreoffice4.3_sdk/LINUXexample.out/bin && ProfUnoLifetime constructed before release destructed after release
うーん、Javaの場合はガベッジコレクターが働くのでC++のときとUNOオブジェクトの寿命が異なるということの実例みたいです。
SimpleBootstrap_java.java LibreOfficeを外部から起動して操作できるようにする
単にCalcが起動するだけです。
FirstStepsのFirstLoadContactとどう違うのでしょう?
プロジェクトウィンドウでFirstLoadContact.javaとSimpleBootstrap_java.javaを両方選択した状態で右クリック→ツール→差分、で視覚的に比較できます。
灰色のところが一致するところ、赤色のところは左にしかないもの、黄緑色は右にしかないもの、水色は似ているところ?
どうやらSimpleBootstrap_java.javaはFirstLoadContact.javaのLibreOfficeを外部から起動して操作するようにする部分のようです。
参考にしたサイト
デベロッパーズガイドの第2章になります。
gcc: error trying to exec 'cc1plus'... [Archive] - Ubuntu Forums
g++がインストールされていないとでてくるエラーです。
g++がインストールされていないとでてくるエラーです。
0 件のコメント:
コメントを投稿