JaclシェルでTclスクリプトを実行する

 UNIX向けの配布物の中には「jaclsh」という、 tclshみたいなシェルがありますが、jaclshを使わなくても、 次のようにすればJava VM上でTclスクリプトを実行できます。

% java tcl.lang.Shell test.tcl

スクリプトtest.tclの中身は普通のTclスクリプトでよいわけですが、 java::newなどの「java::」コマンドを使う場合には、冒頭部で

package require java

の一行を書いておく必要があります。 また、java::new コマンドでロードするJavaクラスは、 通常のJava環境と同様、環境変数CLASSPATHで指定されたパスの中から検索されます。

 また、Jaclシェルを使うと(Tcl Blendでも同様のことができますが)、 自作したJavaクラスの動作テストを行うために、 Tclスクリプトを書くだけで、そのクラスのオブジェクトを動かしてみることができ、 テスト・コードをコンパイルする手間が省けます。
 以下の例では、Javaで簡単な暗号化と復号のルーチンを作ってみました。 uranom.nam.Encoderクラスのメソッド encode() と decode() です。それらはnam.jarに含まれているとします。 これに何か文字列を与えて、動作テストをしてみようと思います、と言ったときに、 下のTclスクリプト(aaa.tcl)とバッチファイルを作って、実行します。

package require java
java::import uranom.nam.Encoder

set s1 "お宝は島の裏側のRoute134と書かれた看板の真東500mにある。"
set s2 [java::call Encoder encode $s1]
puts $s2
set s3 [java::call Encoder decode $s2]
puts $s3

set CLASSPATH=C:\usr\java\lib\jacl.jar;C:\usr\java\lib\tcljava.jar;C:\dev\nam.jar
java tcl.lang.Shell aaa.tcl

拡張レビュー分室 top
(first uploaded 2003/07/25 last updated 2005/11/06, MISUMI URANO)