linuxBean(24)LibreOfficeのJavaマクロをNetBeans8でコンパイル

2015-01-30

旧ブログ

t f B! P L

前の関連記事: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のマイマクロフォルダになります。

ところがこれはやってみてわかったのですがマイマクロフォルダに置いたjavaマクロを実行しようとするとこのようにScripting Frameworkエラーがでてどうしても解決できませんでした。

あとで調べたところLibreOffice4.1ではマイマクロフォルダに置いたJavaマクロを実行できましたが、LibreOffice4.2以降ではマイマクロフォルダに置いたJavaマクロはエラーがでて実行できなくなっていました。

LibreOffice4.4.0.3に至ってはLibreOfficeのマクロフォルダのJavaマクロすら実行できませんでした。

仕方ないのでマイマクロフォルダは諦めてLibreOfficenのマクロフォルダに自作マクロを置くことにします。

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フォルダをソース・パッケージ・フォルダに追加します。

「次>」へ。


「含める」に「*.java」と入力するとJavaソースファイルだけ「含めるファイル」に選択できます。

「終了」。

プロジェクトにLibreOfficeのライブラリを追加する



左のプロジェクトウィンドウでmyHelloWorld→ソースパッケージ→<デフォルト・パッケージ>→myHelloWorld.javaをダブルクリックすると右のパネルにmyHelloWorld.javaが開きます。

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を再起動しないといけません。

ツール→マクロ→マクロを実行。


LibreOfficeのマクロ→myHelloWorldを選択。

「実行」。


うまくいきました。

NetBeansでブレークポイントを設定する


LibreOffice(25)JavaのマクロをNetBeans7でデバッグすると全く同じ方法でうまくいきました。

参考にしたサイト


Scripting in Java with NetBeans IDE - Apache OpenOffice Wiki
JavaマクロをNetBeansを使って作る実習

次の関連記事:linuxBean(25)ファイル検索ソフトは2つある

ブログ検索 by Blogger

Translate

最近のコメント

Created by Calendar Gadget

QooQ