Java スクリプティング機能とはJavaからJavaScriptを実行したり、JavaScriptからJavaのクラスを参照したりする機能。 詳しくはJava SE 6 じゃじゃ馬ならし Scriptingを見てもらうとして JavaScriptからJavaで定義されたクラスを参照する際にパッケージをimportします。
java.ioパッケージを読み込むときは次のように書きます。
importPackage(java.io);
これをOpenCSVを使うためにau.com.bytecode.opencsvを取り込もうと次のように書くと
importPackage(au.com.bytecode.opencsv);
これはエラーになります。
手軽に試すならこんな感じ
C:\temp\opencsv-2.3\deploy>jrunscript js> importPackage(au.com.bytecode.opencsv) script error: sun.org.mozilla.javascript.internal.EcmaError: ReferenceError: "au" is not defined. (<STDIN>#1) in <STDIN> at line number 1
auが見えないということはクラスパスの指定がおかしいのか?とか、そのくせ存在しないパッケージ名を指定してもエラーが出ないのはなんなんだ!?散々悩んだのですが、大丈夫。世の中の大半の謎はstackoverflowで解決されているッ!Import a class in Scripting java (javax.script)を見ると、次のように頭にPackagesを付ければOK。
importPackage(Packages.au.com.bytecode.opencsv);
要点だけ訳すと
Please note that "java" is a shortcut for "Packages.java". There are equivalent shortcuts for javax, org, edu, com, net prefixes 「java」は「"Packages.java」へのショートカットであることに注意してください。javax、org、edu、com、netにも同様のショートカットがあります。
importPackageを使うときはパッケージ名の前に「Packages.」を付けること、ただしjava、javax、org、edu、com、netで始まるパッケージの場合は省略できる。