web-dev-qa-db-ja.com

Java 8 JavascriptEngineの下位互換性

プロジェクトでJava 8を試していますが、ビルドプロセスに関連するエラーでスタックしています。

私はANTスクリプトを使用しており、ある時点でjavascript(ANTに埋め込まれている)を使用してビルド固有の操作を実行しています。エラーの原因となっているスクリプトの部分は次のようになります。

<script language="javascript"> 

        <![CDATA[

        importClass(Java.io.File);
        importClass(Java.io.FileReader);
                    ...
                    ]]>
</script>

プロジェクトはJava 7またはJava 6で正常にビルドされていますが、Java 8.これらのエラーは、JSエンジンのアップグレードに関連しています。

特に、次の例外が発生します。

javax.script.ScriptException:ReferenceError: "importClass"が行で定義されていません

いくつかグーグルした後、私はそれがJDKの以下の問題に関連していることを知りました

[#JDK-8025132]

コメントで提案されていることを試しましたが、運がありませんでした。

Java 8NashornエンジンをRhinoJSエンジンと互換性を持たせるにはどうすればよいですか?

25
nikkatsa

1つのアプローチは含めることです

load("nashorn:mozilla_compat.js");

importClassを提供します。

一方、Java.io.File、Java.io.FileReader、...をインポートせずに直接使用できます。

var File = Java.io.File;
var FileReader = Java.io.FileReader;

これはRhinoとの下位互換性があります。

48
wickund