0

antを使用してプロジェクトをビルドしようとすると、「java.lang.NoClassDefFoundError:sun / org / Mozilla / javascript / internal/Scriptable」が表示されます。

これは、Rhino(Oracle JDKに付属するバンドルされたjavaスクリプト)の使用に起因します。

  • Eclipseを使用してプロジェクトをビルドすると、すべてが正常に機能します。
  • 私が使用しているantファイルはeclipseによって生成され、java-scriptの依存関係を除いて正常に動作します。
  • これらの依存関係は、OracleJDKに付属のRT.jarにあります。
  • jdk6_0_u41とjdk7の両方を試しましたが、どちらも同じ結果になりました。Eclipseで成功し、antで失敗します。
  • 私はubuntu10と12の両方で構築しようとしました

私には受け入れられないと思われる他の2つの提案を見ました。

  • あるスレッドは、RT.jarをプロジェクトのlibディレクトリにコピーすることを提案しました。(RTはJavaランタイム全体です!)
  • 別のスレッドは、私が使用すべきではないことを示唆しました:sun / org / mozilla / javascript/internal。しかし、私は高度な操作(オブジェクトメソッドの呼び出し、コールバックの登録など)を行っているため、sun.org.mozilla.javascript.internalクラスファミリーを使用する以外に方法はありません。
4

1 に答える 1

0

Oracleのサイトからのコメント:

ユーザーは、内部JDK実装クラスに依存するコードを記述しないでください。このようなクラスは、JDKの内部実装の詳細であり、予告なしに変更される場合があります。

これはコンパイラの問題ではありません。ct.symで提供される情報によると、javacは正しく動作しています。

この問題は、ct.symで何を利用できるか(そして何を隠すか)を決定する人々にあります。

Rhinoのjarをプロジェクトに含めて、「内部」がユーザーから隠されていない元のRhinoクラスにリポイントすることを提案できます。

于 2013-03-05T10:29:56.070 に答える