- ベストアンサー
Rhinoの実行時のクラスパス
java による javascript の実装であるrhino (http://www.mozilla.org/rhino/)で defineClass("自作クラス"); によってクラスの読込をする時 >java -cp 'クラスパス指定' org.mozilla.javascript.tools.shell.Main を使うと問題なく実行できますが、 同じようでも >java -cp 'クラスパス指定' -jar js.jar を使った時には、クラスが見つからないというエラーになります。 おそらくクラスパスの指定が悪いのかと思うのですが、 jar ファイルの時はどうしてダメなんでしょうか? どう指定するのが正しいのでしょうか?
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
とりあえず検索で見つけたページ。 詳しいことは、わかりませんが…。 ・http://www.fk.urban.ne.jp/home/kishida/kouza/old/javajar.html ・http://java-house.jp/ml/archive/j-h-b/043878.htmlのスレッド (http://java-house.jp/ml/archive/j-h-b/043921.htmlとか)
その他の回答 (1)
java -jarオプションは、実行時にクラスパスをオーバーライドし自身に用意されたものに置き換えてしまいます。Sunのドキュメントには以下のように書かれています。 「-jar オプションで指定された JAR アーカイブ。この値は、ほかのすべての値をオーバーライドする。 このオプションを使用すると、すべてのユーザクラスが、指定されたアーカイブから検索される」 したがって、-cpの指定を必要とする際には面倒ですが-jarを使わず起動するしかないように思います。
お礼
結局クラスパスにjarファイルを含めて指定し、-jar は、使わないということにしようと思います。 バッチにしておけば、入力もさほど面倒ではないですしね。 回答ありがとうございました。
補足
ご回答ありがとうございます。 -cp の指定は、-jar でJARアーカイブを起動した場合には、無視される(無効になる)のですね。 その場合、例えばloadClassメソッドのようなものを使ってもやはりクラスの読込はできないということですよね。 JARアーカイブによるプログラム実行中にも動的にクラスを読み込むような用途もあるかと思いますが、その場合はどのような手順になるのでしょうか? 必要なクラスはJARアーカイブによる実行の場合は、JARアーカイブしておくということでしょうか?
お礼
ありがとうございます。 すごく参考になりました。