2012-09-17

Rhino起動時の-classpathオプションに"."を入れ忘れてエラー

書き捨てスクリプトからカレントディレクトリのJavaクラスを呼び出そうとして、 うっかり-classpathにjs.jarだけ指定していたためにエラーになったことが何度かあった。
それ以来、Rhino起動時は、まず"."と"js.jar"をクラスパスに含めるようにしている。

1. Javaソースファイル(fruits/Fruit.java):
package fruits;
public class Fruit {
    public String name;
}

2. Javaクラスファイルを作成する(fruits/Fruit.class):
>javac fruits/Fruit.java

3. スクリプトファイル(fruit.js):
print(Packages.fruits.Fruit);
var fruit = new Packages.fruits.Fruit();
fruit.name = "banana";
print("fruit=" + fruit.name);

4-1. -classpathオプションに"."を入れ忘れた場合、指定されたJavaクラスが見つからないのでエラー:
>java -classpath js.jar org.mozilla.javascript.tools.shell.Main -w -debug fruit.js
[JavaPackage fruits.Fruit]
js: "fruit.js", line 2: uncaught JavaScript runtime exception: TypeError: [JavaPackage fruits.Fruit] is not a function, it is object.
        at fruit.js:2

4-2. -classpathオプションに"."を含めると、期待通りJavaクラスを使える:
>java -classpath .;js.jar org.mozilla.javascript.tools.shell.Main -w -debug fruit.js
[JavaClass fruits.Fruit]
fruit=banana

0 件のコメント:

コメントを投稿