Rhinoを使っていて、外部jarファイルにあるクラスがどうしても利用できず悩みました。無事解決したので、ここに使い方をメモします。そもそも、Rhinoを使うとき、外部jarファイルにあるクラスを使うためには、まず、第一に、クラスパスにjarファイルを追加すること。

もし、jarファイルのhoge.jarを使いたい場合には、クラスパス(-cp)にjarファイルへの参照を追加します。

#!/bin/sh
java
  -Dfile.encoding=UTF-8
  -cp ~/bin/js.jar:hoge.jar
  org.mozilla.javascript.tools.shell.Main $*

そして、ここで悩んだのが、もし、jarファイル内のクラスが、java/javaxで始まらない場合(たいてい、外部jarファイル内のクラスは始まりませんね・・・)その場合、Rhino(JavaScript 側)のソースコードでは、パッケージ名に、Packagesの接頭辞を追加する必要があります。

もし、xxx.Hoge というクラスを表す場合、Packages.xxx.Hoge と書かなくてはなりません。

var Hoge = Packages.xxx.Hoge;
var instance = new Hoge();

Pacakgesをつけるという簡単な仕様がなかなか見当たらず、パッケージ名のエラーが出る問題を解決するのに時間がかかりました。。。