前の関連記事:linuxBean(23)NetBeans8のインストール
NetBeansのインストールができたのでlinuxBeanでもLibreOfficeのJavaマクロを作れるようにします。ただし、「マイマクロ」フォルダにもってくるとエラーがでて実行できませんでした。
LibreOfficeのJavaマクロを作ってみる
linuxBean(11)LibreOfficeのインストールでLibreOffice4.3.5.2がインストールした状態から開始します。
まずはJavaマクロが動く状態なのか確認します。
LibreOffice Writerを起動して、ツール→マクロ→マクロを実行。
LibreOfficeのマクロ→HelloWorld→org.libreoffice.example.java_scripts.HelloWorld.printHWを選択して「実行」。
Hello World (in Java) と入力されるはずです。
JavaソースファイルHelloWorld.javaをサンプルに使う
サンプルマクロをコンパイルしなおしてみます。
まずJavaのマイマクロフォルダを作成します。
/home/ユーザー名/.config/libreoffice/4/user/Scripts/ に java というフォルダを作ればこれがJavaのマイマクロフォルダになります。
あとで調べたところLibreOffice4.1ではマイマクロフォルダに置いたJavaマクロを実行できましたが、LibreOffice4.2以降ではマイマクロフォルダに置いたJavaマクロはエラーがでて実行できなくなっていました。
LibreOffice4.4.0.3に至ってはLibreOfficeのマクロフォルダのJavaマクロすら実行できませんでした。
LibreOfficenのマクロフォルダはroot権限でしか書き込みできず不便なのでまずはパーミッションを変更します。
ファイルマネージャのメニューのツール→rootユーザーとして現在のフォルダを開く。
/opt/libreoffice4.3/share/Scripts/javaフォルダを右クリック→プロパティ。
グループも他のユーザもすべて「読み書き」にして「OK」します。
既存のLibreOfficeのマクロを変更する予定はないのでこれは「いいえ」とします。
root権限での操作はこれで終了します。
ユーザー権限に戻って/opt/libreoffice4.3/share/Scripts/javaフォルダにmyHelloWorldフォルダを作成します。
/opt/libreoffice4.3/share/Scripts/java/HelloWorldフォルダの中のHelloWorld.javaとparcel-descriptor.xmlの二つのファイルを/opt/libreoffice4.3/share/Scripts/java/myHelloWorldフォルダにコピーします。
HelloWorld.javaはmyHelloWorld.javaに名前を変更しておきます。
これで実習材料が準備完了です。
NetBeans8でmyHelloWorldのプロジェクトを作成する
ファイル→新規プロジェクト。
「既存のソースを使用するJavaプロジェクト」を選択して「次へ」。
「プロジェクト名」にmyHelloWorldと入力するとNetBeansProjectsフォルダ内に同名のフォルダが自動的に生成されます。
「次>」へ。
/opt/libreoffice4.3/share/Scripts/java/myHelloWorldフォルダをソース・パッケージ・フォルダに追加します。
「次>」へ。
「終了」。
プロジェクトにLibreOfficeのライブラリを追加する
21行目から25行目までの行番号に感嘆符!がついています。
ここにマウスカーソルをもっていくとimport文にあるパッケージが存在しません、と注意がでます。
これはLibreOfficeのライブラリを追加することで解決します。
myHelloWorldプロジェクトを選択した状態で右クリック→プロパティを選択。
カテゴリ、で、ライブラリを選択します。
「JAR/フォルダの追加」をクリックして次の4つのjarファイルを追加します。
/opt/libreoffice4.3/ure/share/java/juh.jar
/opt/libreoffice4.3/ure/share/java/jurt.jar
/opt/libreoffice4.3/ure/share/java/ridl.jar
/opt/libreoffice4.3/program/classes/unoil.jar
「OK」するとmyHelloWorld.javaのimport文のエラーが消えているはずです。
public class myHelloWorld { public static void printHW(XScriptContext xSc) { // getting the text document object XTextDocument xtextdocument = (XTextDocument) UnoRuntime.queryInterface( XTextDocument.class, xSc.getDocument()); XText xText = xtextdocument.getText(); XTextRange xTextRange = xText.getEnd(); xTextRange.setString( "myHello World (in Java)" ); }// printHW30行目と38行目のHelloをmyHelloに書き換えます。
コンパイルで生成したjarファイルをソースパッケージフォルダに自動でコピーさせる設定
ファイルタブをクリックしてmyHelloWorldの下にあるbuild.xmlをダブルクリックして右に内容を表示させます。
build.xmlの最終行にある</project>の上行に以下を追加します。
<!-- This will copy the compiled jar to the Scripts/java/myHelloWorld directory --> <target name="-post-jar"> <copy overwrite="true" file="${dist.jar}" todir="${src.dir}"/> </target> <!-- This will clean the copy of myHelloWorld.jar in the Scripts/java/myHelloWorld directory --> <target name="-post-clean"> <delete file="${src.dir}/myHelloWorld.jar" /> </target>これによって${dist.jar}(コンパイル後のdistフォルダ)
から${src.dir}(ソースパッケージフォルダ)にコンパイル後のjarファイルがコピーされます。
HelloWorld.javaをコンパイルしてマイマクロフォルダにHelloWorld.jarを生成
NetBeansのメニューで、実行→プロジェクト(HelloWorld)をビルド、を実行します。
ウィンドウ→出力、で出力結果を見ることができます。
「ビルド成功」と表示されていれば完了です。
ファイルタブをみると生成したファイルがわかります。
myHelloWorldフォルダのなかにdistフォルダができてそのなかにmyHelloWorld.jarファイルができているのがわかります。
それがソースパッケージフォルダにコピーされているのもわかります。
マクロセレクターへの表示にはparcel-descriptor.xmlが必要
Windowsでやったときと同じです。(LibreOffice(24)NetBeans7でJavaのマクロを作成参照。)
今回は「Hello」を「myHello」に置換するだけです。
置換後にファイル→すべて保存。
JavaマクロmyHelloWorldを実行する
LibreOffice Writerを起動します。
マクロセレクターにはLibreOfficeの起動時に読み込まれるのでマクロを変更したらLibreOfficeを再起動しないといけません。
ツール→マクロ→マクロを実行。
「実行」。
うまくいきました。
NetBeansでブレークポイントを設定する
LibreOffice(25)JavaのマクロをNetBeans7でデバッグすると全く同じ方法でうまくいきました。
参考にしたサイト
Scripting in Java with NetBeans IDE - Apache OpenOffice Wiki
JavaマクロをNetBeansを使って作る実習
0 件のコメント:
コメントを投稿