前の関連記事: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)" );
}// printHW
30行目と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 件のコメント:
コメントを投稿