linuxBean14.04(36)失敗したLibreOfficeSDKの例を再make:その3

ラベル: , , ,

前の関連記事:linuxBean14.04(35)FirstStepsの例をNetBeans8でビルドする


今度は/opt/libreofficedev5.0/sdk/examples/DevelopersGuide/OfficeBeanの例をみます。結論としてはJDKの非推奨APIのshow()をsetVisible(true)に置き換えただけで、officebean.jarの非推奨APIの置き換え(開発中止?)はどうするかわかりませんでした。

非推奨APIのままでもコンパイル時に注意はでるが起動はできる


DevelopersGuide_OfficeBean.log
mkdir -p /home/pq/libreoffice5.0_sdk/LINUXexample.out/class/OOoBeanViewer/org/libreoffice/sdk/examples/developers_guide/office_bean
javac  -classpath "/opt/libreofficedev5.0/sdk/../program/classes/jurt.jar:/opt/libreofficedev5.0/sdk/../program/classes/ridl.jar:/opt/libreofficedev5.0/sdk/../program/classes/juh.jar:/opt/libreofficedev5.0/sdk/../program/classes/unoil.jar:/opt/libreofficedev5.0/sdk/../program/classes/officebean.jar:/home/pq/libreoffice5.0_sdk/LINUXexample.out/class/OOoBeanViewer" -d /home/pq/libreoffice5.0_sdk/LINUXexample.out/class/OOoBeanViewer OOoBeanViewer.java 
注意:OOoBeanViewer.javaは非推奨のAPIを使用またはオーバーライドしています。
注意:詳細は、-Xlint:deprecationオプションを指定して再コンパイルしてください。
--------------------------------------------------------------------------------
Please use the following command to execute the example!
-
make OOoBeanViewer.run
--------------------------------------------------------------------------------
OOoBeanViewer.javaで非推奨のAPIを使っていると注意が出ます。

とりあえずこのままmake OOoBeanViewer.runとするとちゃんと起動しました。


一応動くのですが非推奨APIを修正することにしました。

-Xlint:deprecationオプションを指定して再コンパイルして非推奨API一覧を得る


注意がでるだけで動作に支障がなければとくに修正する必要がない気もしますが、とりあえずjavacに-Xlint:deprecationオプションを指定して再コンパイルして詳細を見てみます。
pq@pq-VirtualBox:/opt/libreofficedev5.0/sdk/examples/DevelopersGuide/OfficeBean$ javac -Xlint:deprecation  -classpath "/opt/libreofficedev5.0/sdk/../program/classes/jurt.jar:/opt/libreofficedev5.0/sdk/../program/classes/ridl.jar:/opt/libreofficedev5.0/sdk/../program/classes/juh.jar:/opt/libreofficedev5.0/sdk/../program/classes/unoil.jar:/opt/libreofficedev5.0/sdk/../program/classes/officebean.jar:/home/pq/libreoffice5.0_sdk/LINUXexample.out/class/OOoBeanViewer" -d /home/pq/libreoffice5.0_sdk/LINUXexample.out/class/OOoBeanViewer OOoBeanViewer.java 
OOoBeanViewer.java:102: 警告: [deprecation] OOoBeanのisMenuBarVisible()は非推奨になりました
        menuBarButton.setSelected( aBean.isMenuBarVisible() );
                                        ^
OOoBeanViewer.java:105: 警告: [deprecation] OOoBeanのisStandardBarVisible()は非推奨になりました
        mainBarButton.setSelected( aBean.isStandardBarVisible() );
                                        ^
OOoBeanViewer.java:108: 警告: [deprecation] OOoBeanのisToolBarVisible()は非推奨になりました
        toolBarButton.setSelected( aBean.isToolBarVisible() );
                                        ^
OOoBeanViewer.java:111: 警告: [deprecation] OOoBeanのisStatusBarVisible()は非推奨になりました
        statusBarButton.setSelected( aBean.isStatusBarVisible() );
                                          ^
OOoBeanViewer.java:175: 警告: [deprecation] OOoBeanのreleaseSystemWindow()は非推奨になりました
                    aBean.releaseSystemWindow();
                         ^
OOoBeanViewer.java:247: 警告: [deprecation] OOoBeanのisMenuBarVisible()は非推奨になりました
                aBean.setMenuBarVisible( !aBean.isMenuBarVisible() );
                                               ^
OOoBeanViewer.java:247: 警告: [deprecation] OOoBeanのsetMenuBarVisible(boolean)は非推奨になりました
                aBean.setMenuBarVisible( !aBean.isMenuBarVisible() );
                     ^
OOoBeanViewer.java:255: 警告: [deprecation] OOoBeanのisStandardBarVisible()は非推奨になりました
                aBean.setStandardBarVisible( !aBean.isStandardBarVisible() );
                                                   ^
OOoBeanViewer.java:255: 警告: [deprecation] OOoBeanのsetStandardBarVisible(boolean)は非推奨になりました
                aBean.setStandardBarVisible( !aBean.isStandardBarVisible() );
                     ^
OOoBeanViewer.java:263: 警告: [deprecation] OOoBeanのisToolBarVisible()は非推奨になりました
                aBean.setToolBarVisible( !aBean.isToolBarVisible() );
                                               ^
OOoBeanViewer.java:263: 警告: [deprecation] OOoBeanのsetToolBarVisible(boolean)は非推奨になりました
                aBean.setToolBarVisible( !aBean.isToolBarVisible() );
                     ^
OOoBeanViewer.java:271: 警告: [deprecation] OOoBeanのisStatusBarVisible()は非推奨になりました
                aBean.setStatusBarVisible( !aBean.isStatusBarVisible() );
                                                 ^
OOoBeanViewer.java:271: 警告: [deprecation] OOoBeanのsetStatusBarVisible(boolean)は非推奨になりました
                aBean.setStatusBarVisible( !aBean.isStatusBarVisible() );
                     ^
OOoBeanViewer.java:405: 警告: [deprecation] Windowのshow()は非推奨になりました
       frame.show();
            ^
警告14個
-Xlint:deprecationオプションを指定して再コンパイルすると非推奨APIとそれが使われている場所がわかります。

NetBeansでjavaソースファイルを開くと非推奨APIには打ち消し線が乗っている


javaソースファイルの編集はNetBeansですることにします。

linuxBean14.04(35)FirstStepsの例をNetBeans8でビルドすると同じようにしてNetBeansでプロジェクトを作ります。

プロジェクト名はOOoBeanViewerにしました。

追加するライブラリはjavacの引数で確認します。

javac -classpath "
/opt/libreofficedev5.0/sdk/../program/classes/jurt.jar:
/opt/libreofficedev5.0/sdk/../program/classes/ridl.jar:
/opt/libreofficedev5.0/sdk/../program/classes/juh.jar:
/opt/libreofficedev5.0/sdk/../program/classes/unoil.jar:
/opt/libreofficedev5.0/sdk/../program/classes/officebean.jar:
/home/pq/libreoffice5.0_sdk/LINUXexample.out/class/OOoBeanViewer"
-d /home/pq/libreoffice5.0_sdk/LINUXexample.out/class/OOoBeanViewer
OOoBeanViewer.java 

linuxBean14.04(35)FirstStepsの例をNetBeans8でビルドするで作った「LibreOfficeDev5.0」ライブラリに加えて、/opt/libreofficedev5.0/program/classes/officebean.jarを追加すればよいとわかります。


とりあえずこれでプロジェクトウィンドウにでていたエラー表示がOOoBeanViewer.javaから消えました。


-Xlint:deprecationオプションで指摘された非推奨APIと同じ部分がNetBeansのエディタ部分では打ち消し線で表示されています。

行頭にエラー表示はありません。

NetBeansで非推奨API一覧を表示させる方法はないらしい


非推奨APIがソースのどこにあるのかNetBeansで一覧にだせないかいろいろ調べてみましたが、そういう機能はないようです。

ソースコードをスクロールして打ち消し線があるところを探すしかないようです。

せめて書式で取り消し線を検索できたらよいのですが、それもできないようです。

非推奨API一覧はコンパイルしてみるしかないようです。

NetBeansのプロジェクトウィンドウでプロジェクトを右クリック→プロパティ。


「カテゴリ」で「ビルド」→「コンパイル」。

「非推奨APIの使用を報告」にチェックをいれます。

これで実行→プロジェクト(OOoBeanViewer)をビルド。

ウィンドウ→出力、で表示される出力タブにjavac -Xlint:deprecation、と同じように非推奨API一覧が出力されました。

どのAPIが非推奨なのかの情報はライブラリに入っている


ライブラリを追加したり除去したりするとNetBeansのエディタの打ち消し線がついたり消えたりすることに気がつきました。

ライブラリからofficebean.jarを除去すると非推奨APIは405行目のshow()だけになりました。

405行目のshow()をクリックして、ウィンドウ→IDEツール→Javadocドキュメント。

JavadocタブがでてきてshowのJavadocが表示されます。

java.​awt.​Window
@Deprecated public void show()
非推奨。 As of JDK version 1.5, replaced by Window.setVisible(boolean).
Makes the Window visible. If the Window and/or its owner are not yet displayable, both are made displayable. The Window will be validated prior to being made visible. If the Window is already visible, this will bring the Window to the front.
参照:
Component.isDisplayable, Window.toFront

show()はWindow.setVisible(boolean)に変更になったそうです。

officebean.jarのAPIにはJavadocはないのでどうすればよいのかは、ほかで情報を得ないといけません。

非推奨API show()をsetVisible(true)に置き換える


編集するOOoBeanViewer.javaは読み取り専用になっているので、まず豆ボタン→アクセサリ→ファイルマネージャ PCManFM (root)で/opt/libreofficedev5.0/sdk/examples/DevelopersGuide/OfficeBeanを開きます。

OOoBeanViewer.javaをコピーしてOOoBeanViewer.java.originalというファイル名でペーストしました。

元のOOoBeanViewer.javaのパーミッションの「内容の変更」を「すべて」にしました。

swing - Java Component.show() / hide() are deprecated ... why? - Stack Overflow

これによるとshow()/hide()はsetVisible(true/false)に書き換えればよいようです。

NetBeansでOOoBeanViewer.javaを開きなおして、frame.show();をframe.setVisible(true);に書き換えました。

とりあえずこれでmake cleanしてmakeしてからmake OOoBeanViewer.runとするとちゃんとDemoが起動しまたので置き換えはうまくいきました。

officebean.jarの非推奨API


Prior to OpenOffice.org 2.0 all Office Bean classes were in the com.sun.star.bean package. As of OpenOffice.org 2.0 the classes are contained in the com.sun.star.comp.bean package. The classes of the com.sun.star.bean package are still contained in the officebean.jar but they are deprecated. Further development and bug fixing will occur only in the com.sun.star.comp.bean package.
The Internal Office Bean API - Apache OpenOffice Wiki

これを読んで、OpenOffice.org 2.0より前にcom.sun.star.beanパッケージにあったクラスがOpenOffice.org 2.0からcom.sun.star.comp.beanパッケージ移行したあとにまだofficebean.jarに残っている元com.sun.star.beanパッケージにあったクラスが非推奨APIになった、と読み取ったのですがそうではないようです。

OOoBeanViewer.javaをみるとcom.sun.star.comp.beans.OOoBeanをインポートしています。

非推奨APIはOOoBeanのインスタンスのメソッドですので、NetBeansでofficebean.jarのなかのOOoBeans.classを開いて見てみました。

isMenuBarVisible()
isStandardBarVisible()
isToolBarVisible()
isStatusBarVisible()
releaseSystemWindow()
setMenuBarVisible(boolean)
setStandardBarVisible(boolean)
setToolBarVisible(boolean)
setStatusBarVisible(boolean)

OOoBeanViewer.javaでは非推奨APIにされているこれらのメソッドがすべてOOoBeans.javaに載っているのですが、どれにも@Deprecatedがついていなませんねぇ。よくわかりませんねぇ。

java - OOoBeans dead? - What are my alternatives? - Stack Overflow

これによるとOfficeBeanはもう死にかけだそうです。

NOA Documentation Wiki

Nice Office Access — ubion.ORS

今後Javaでの開発はこのNOAが有望だそうです、、、と思ったらこれはOpenOffice.org向けのようです。

NOA-libre: embed LibreOffice in Java — LibreOffice Conference

noa-libre - NOA Fork to support LibreOffice - Google Project Hosting

LibreOffice向けはこのnoa-libreになるようです。

うーん、これもあんまり活発にはなってなさそうです。

参考にしたサイト


swing - Java Component.show() / hide() are deprecated ... why? - Stack Overflow
非推奨APIのshow()はsetVisible(true)に置き換えることができました。

The Internal Office Bean API - Apache OpenOffice Wiki
Officebean.jarには非推奨APIが含まれているそうです。

java - OOoBeans dead? - What are my alternatives? - Stack Overflow
Officebeanはもう開発中止?

NOA Documentation Wiki
OpenOffice.org向けのUNOラッパーNice Office Access(NOA)のウィキ。

Nice Office Access — ubion.ORS
Nice Office Access(NOA)の本家。

NOA-libre: embed LibreOffice in Java — LibreOffice Conference
Nice Office Access(NOA)のLibreOffice向けのフォークNOA-libreの解説。

noa-libre - NOA Fork to support LibreOffice - Google Project Hosting
NOA-libreの本家。

次の関連記事:linuxBean14.04(37)失敗したLibreOfficeSDKの例を再make:その4

PR

0 件のコメント:

コメントを投稿