2016-03-30 13 views
1

Bazı JavaScript içeren bir projeyi bir çalışma alanına (Eclipse Neon.M6 sürümünü kullanarak) almaya çalıştığımda, şu hatayı alıyorum:Eclipse JSDT: iç hata NoClassDefFoundError: jdk/nashorn/iç/çalışma zamanı/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 

I (çünkü the changes in the Scout Framework for Neon nedeniyle, bu Neon ile yeni) varsayılan olarak JSDT içermelidir "Eclipse for Scout Developers" kullanıyorum. İşte

benim şimdiki yüklemesinin Eclipse Kurulum Detayları (sadece JSDT eklentileri)

:

Eclipse Installation Details

bu olabilir fikrin var mı?

+0

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

See: Eğer Tycho güzelliğinde param görebileceğiniz Örnek olarak, webtools.jsdt\tests\pom.xml kontrol? M6'daki yeni ayrıştırıcı sahnelerin arkasında nashorn kullanıyor ve kurulumunuz için bir şey doğru gitmedi. –

+0

JSDT Eklentisi, "İzci Geliştiricileri için Eclipse" (Neon.M6 Sürümü) 'de varsayılan olarak yüklenmelidir.Yüklemenin orada doğru olmadığı (Neon ile yeni olduğu için) mutlak bir şekilde mümkündür, ancak bunu doğrulayamıyorum. – Jmini

cevap

5

G.Erkan ile yapılan bir sohbet sayesinde Nashorn'un JSDT'ye nasıl bağlandığını öğrendim. İşte mekanizmayı yazıyorum. Bu davranışı anlamak ve düzeltmek için yeterli olduğunu düşünüyorum.

Nashorn, Javascript çalışma zamanı kitaplığıdır, Java 8+ sürümü <java-home>/lib/ext klasöründe kullanılabilir.

Bir OSGi paket, varsayılan olarak, JSDT.core Gergedan kullanıyor gibi lib/Dahili

dışlar önyükleme sınıf yükleyicisi kullanır, JSDT ekibi bu dış lib yüklemek için bir yol geliştirdiler. Çalışma zamanında

: org.eclipse.wst.jsdt.nashorn.extension demeti fragmanı lib ekleyerek demet sınıf yolunu uzatır ClassLoaderHook uzanan bir sınıfı vardır

trick iki bölümden oluşur/ext klasörü. Pratik olarak

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

: ClassLoaderHook etkinleştirmek için etkili olduğu o Hook yapılandırma başlatmak aşağıdaki param tot eklemem gerekiyor sahip olmak koşu yapılandırmaya veya ürün yapılandırmasına parametre eklemek gerekir Bir çalışma zamanında çalışıyor.

Geliştirme zamanında ve yerel Tycho build:'da test etmek için, normal Java uzantı sınıf yükleyicisini yüklemek için Equinox sınıf yükleyicisine söylemek üzere bir parametre belirlemeniz gerekecektir.

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

Pratik, test yapılandırmasına param eklemem gerekiyor, ve Tycho yapılandırmasında olacaktır: Bunun için aşağıdaki param kullanmanız gerekecektir. Eğer/almak vermedi JSDT indirmek Nasıl da

İlgili konular