2016-03-30 11 views
1

一部のJavaScriptを含むプロジェクトを(Neon.M6バージョンのEclipseを使用して)ワークスペースにインポートしようとすると、このエラーが発生します。Eclipse JSDT:内部エラーNoClassDefFoundError:jdk/nashorn/internal/runtime/ECMAException

eclipse.buildId=4.6.0.I20160317-0200 
java.version=1.8.0_05 
java.vendor=Oracle Corporation 
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US 

org.eclipse.core.jobs 
Error 
Wed Mar 30 18:38:50 CEST 2016 
An internal error occurred during: "Validating ****". 

java.lang.NoClassDefFoundError: jdk/nashorn/internal/runtime/ECMAException 
    at org.eclipse.wst.jsdt.core.dom.ASTParser.internalCreateAST(ASTParser.java:860) 
    at org.eclipse.wst.jsdt.core.dom.ASTParser.createAST(ASTParser.java:651) 
    at org.eclipse.wst.jsdt.internal.core.validation.JavaScriptValidator.validate(JavaScriptValidator.java:62) 
    at org.eclipse.wst.validation.Validator$V2.validate(Validator.java:1159) 
    at org.eclipse.wst.validation.internal.ValManager.validate(ValManager.java:704) 
    at org.eclipse.wst.validation.internal.ValManager$1.visit(ValManager.java:665) 
    at org.eclipse.wst.validation.internal.ValManager.accept(ValManager.java:810) 
    at org.eclipse.wst.validation.internal.ValManager.validate(ValManager.java:669) 
    at org.eclipse.wst.validation.internal.ValBuilderJob$Visitor.visit(ValBuilderJob.java:299) 
    at org.eclipse.core.internal.resources.Resource$2.visit(Resource.java:120) 
    at org.eclipse.core.internal.resources.Resource$1.visitElement(Resource.java:84) 
    at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:82) 
    at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:87) 
    at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:87) 
    at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:87) 
    at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:87) 
    at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:87) 
    at org.eclipse.core.internal.watson.ElementTreeIterator.iterate(ElementTreeIterator.java:129) 
    at org.eclipse.core.internal.resources.Resource.accept(Resource.java:94) 
    at org.eclipse.core.internal.resources.Resource.accept(Resource.java:52) 
    at org.eclipse.core.internal.resources.Resource.accept(Resource.java:117) 
    at org.eclipse.core.internal.resources.Resource.accept(Resource.java:105) 
    at org.eclipse.wst.validation.internal.ValBuilderJob.fullBuild(ValBuilderJob.java:219) 
    at org.eclipse.wst.validation.internal.ValBuilderJob.run(ValBuilderJob.java:178) 
    at org.eclipse.wst.validation.internal.ValBuilderJob.runInWorkspace(ValBuilderJob.java:126) 
    at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:39) 
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55) 
Caused by: java.lang.ClassNotFoundException: jdk.nashorn.internal.runtime.ECMAException cannot be found by org.eclipse.wst.jsdt.core_2.0.0.v201603171403 
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:444) 
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:357) 
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:349) 
    at org.eclipse.osgi.internal.loader.ModuleClassLoader.loadClass(ModuleClassLoader.java:161) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    ... 27 more 

私は(理由the changes in the Scout Framework for Neonの、これはネオンで新しく追加されました)は、デフォルトでJSDTを含まなければならない「Eclipse for Scout Developers」を使用しています。ここで

私の現在のインストール(のみJSDTのプラグイン)のEclipseのインストールの詳細:

Eclipse Installation Details

これができるか任意のアイデア?

+0

どのようにあなたがJSDTをダウンロード/取得んでした:例として、あなたはティコ確実なのparamを見ることができwebtools.jsdt\tests\pom.xmlを、確認してください? M6の新しいパーサーがナショナーンを使用していますが、何かがあなたのインストールのために正しく行かなかったのです。 –

+0

JSDTプラグインは、「Eclipse for Scout Developers」(Neon.M6バージョン)にデフォルトでインストールする必要があります。インストールが正しくない可能性があります(Neonの新機能です)が、確認できません。 – Jmini

答えて

5

G.Erkanとのチャットのおかげで、NashornがJSDTにどのように夢中になったかを学びました。ここで私はメカニズムを書き留めています。私はこれが行動を理解し、修正するのに十分だと思う。

Nashornは、Java 8以降の<java-home>/lib/extフォルダにあるJavascriptランタイムライブラリです。

アンOSGiバンドルは、デフォルトでは、JSDT.coreはNashornを使用しているとのlib/extに

を除外し、ブートクラスローダを使用し、JSDTチームは、この外部のlibをロードする方法を詳述しました。

トリックは2つの部分で構成されます。実行時に

org.eclipse.wst.jsdt.nashorn.extensionバンドルフラグメントはLIBを追加することによって、バンドルクラスパスを拡張ClassLoaderHookを拡張するクラスを有します/ extフォルダー。実際に

-Dosgi.framework.extensions=org.eclipse.wst.jsdt.nashorn.extension 

: はClassLoaderHookを有効にするには有効であるために、彼はフックのための設定を起動し、次のparam TOTを追加する必要がありますあなたが持っているあなたの実行コンフィギュレーションにしたり、製品構成にパラメータを追加する必要があります。実行時に動作します。

開発時のテスト、およびローカルTychoビルド:の場合、Equinoxクラスローダに通常のJava拡張クラスローダをロードするように指示するパラメータを指定する必要があります。

-Dorg.osgi.framework.bundle.parent=ext 

は実際にあなたがあなたのテスト構成にPARAMを追加する必要があり、そしてあなたのティコの構成でます: このためには、次のparamを使用する必要があります。

<argLine>-Dorg.osgi.framework.bundle.parent=ext</argLine> 

も参照してください

関連する問題