This is a heads up for anyone else who may come across this email 
when
searching for my stack trace below. I spent a bit of time trying to 
figure
out what went wrong, and I am not the only one (
https://www.eclipse.org/forums/index.php?t=msg&th=1076119). If anyone 
knows
a better solution to this problem than I outline below I would be 
grateful.
When using JSDT setup in a PDE target platform you can get an 
exception
java.lang.NoClassDefFoundError: 
jdk/nashorn/internal/runtime/ECMAException
when opening JS editors in the runtime Eclipse.
This does not happen in a properly installed Eclipse because the
classloading hooked in with https://wiki.eclipse.org/Adaptor_Hooks is 
done
by P2 when it installs the org.eclipse.wst.jsdt.nashorn.extension 
bundle.
P2 automatically updates the config.ini with the 
osgi.framework.extensions
setting pointing at org.eclipse.wst.jsdt.nashorn.extension.
PDE does not know about this (see http://eclip.se/271189), so if your
target platform has JSDT in it, the config.ini generated by PDE does 
not
have osgi.framework.extensions set. To be more precise, it works fine 
if
the target platform is setup to point to an existing installation 
having
JSDT installed properly because PDE inherits the config.ini in that 
case.
But if the PDE target platform is pointing directly at the P2 site, 
PDE
does not handle that case.
The solution is to add
-Dosgi.framework.extensions=org.eclipse.wst.jsdt.nashorn.extension_<version>.jar
to the vmargs of the launch configuration. You can add this to the 
launch
configuration, or to target file in the Environment tab, but the 
latter
will not affect launch configurations that were created before 
editing the
target file.
I cannot figure out how to make the version or full name of the 
bundle a
variable so that it does not have to be updated. Nor do I know how to 
set
this up from a TPD (
https://github.com/mbarbero/fr.obeo.releng.targetplatform) file.
HTH
Jonah
This is an example of the stack trace you get:
!ENTRY org.eclipse.ui 4 4 2016-05-27 17:59:55.023
!MESSAGE Unable to create part
!SUBENTRY 1 org.eclipse.ui.workbench.texteditor 4 0 2016-05-27 
17:59:55.023
!MESSAGE Editor could not be initialized.
!STACK 0
java.lang.NoClassDefFoundError: 
jdk/nashorn/internal/runtime/ECMAException
at 
org.eclipse.wst.jsdt.core.dom.ASTParser.createAST(ASTParser.java:647)
at
org.eclipse.wst.jsdt.internal.core.CompilationUnit.buildStructure(CompilationUnit.java:168)
at
org.eclipse.wst.jsdt.internal.core.Openable.generateInfos(Openable.java:243)
at
org.eclipse.wst.jsdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:538)
at
org.eclipse.wst.jsdt.internal.core.BecomeWorkingCopyOperation.executeOperation(BecomeWorkingCopyOperation.java:39)
at
org.eclipse.wst.jsdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:742)
at
org.eclipse.wst.jsdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:802)
at
org.eclipse.wst.jsdt.internal.core.CompilationUnit.becomeWorkingCopy(CompilationUnit.java:122)
at
org.eclipse.wst.jsdt.internal.ui.javaeditor.CompilationUnitDocumentProvider.createFileInfo(CompilationUnitDocumentProvider.java:975)
at
org.eclipse.ui.editors.text.TextFileDocumentProvider.connect(TextFileDocumentProvider.java:478)
at
org.eclipse.wst.jsdt.internal.ui.javaeditor.CompilationUnitDocumentProvider.connect(CompilationUnitDocumentProvider.java:1190)
at
org.eclipse.ui.texteditor.AbstractTextEditor.doSetInput(AbstractTextEditor.java:4178)
at
org.eclipse.ui.texteditor.StatusTextEditor.doSetInput(StatusTextEditor.java:229)
at
org.eclipse.ui.texteditor.AbstractDecoratedTextEditor.doSetInput(AbstractDecoratedTextEditor.java:1466)
at
org.eclipse.wst.jsdt.internal.ui.javaeditor.JavaEditor.internalDoSetInput(JavaEditor.java:2173)
at
org.eclipse.wst.jsdt.internal.ui.javaeditor.JavaEditor.doSetInput(JavaEditor.java:2146)
at
org.eclipse.wst.jsdt.internal.ui.javaeditor.CompilationUnitEditor.doSetInput(CompilationUnitEditor.java:1306)
at
org.eclipse.ui.texteditor.AbstractTextEditor$5.run(AbstractTextEditor.java:3154)
at
org.eclipse.jface.operation.ModalContext.runInCurrentThread(ModalContext.java:437)
at 
org.eclipse.jface.operation.ModalContext.run(ModalContext.java:353)
at 
org.eclipse.ui.internal.WorkbenchWindow$14.run(WorkbenchWindow.java:2184)
at 
org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at 
org.eclipse.ui.internal.WorkbenchWindow.run(WorkbenchWindow.java:2180)
at
org.eclipse.ui.texteditor.AbstractTextEditor.internalInit(AbstractTextEditor.java:3172)
at
org.eclipse.ui.texteditor.AbstractTextEditor.init(AbstractTextEditor.java:3197)
at
org.eclipse.ui.internal.EditorReference.initialize(EditorReference.java:362)
at
org.eclipse.ui.internal.e4.compatibility.CompatibilityPart.create(CompatibilityPart.java:319)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at
org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:54)
at
org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:966)
at
org.eclipse.e4.core.internal.di.InjectorImpl.processAnnotated(InjectorImpl.java:931)
at
org.eclipse.e4.core.internal.di.InjectorImpl.inject(InjectorImpl.java:151)
at
org.eclipse.e4.core.internal.di.InjectorImpl.internalMake(InjectorImpl.java:375)
at 
org.eclipse.e4.core.internal.di.InjectorImpl.make(InjectorImpl.java:294)
at
org.eclipse.e4.core.contexts.ContextInjectionFactory.make(ContextInjectionFactory.java:162)
at
org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.createFromBundle(ReflectionContributionFactory.java:105)
at
org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.doCreate(ReflectionContributionFactory.java:74)
at
org.eclipse.e4.ui.internal.workbench.ReflectionContributionFactory.create(ReflectionContributionFactory.java:56)
at
org.eclipse.e4.ui.workbench.renderers.swt.ContributedPartRenderer.createWidget(ContributedPartRenderer.java:129)
at
org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createWidget(PartRenderingEngine.java:973)
at
org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:649)
at
org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.safeCreateGui(PartRenderingEngine.java:755)
at
org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.access$0(PartRenderingEngine.java:726)
at
org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$2.run(PartRenderingEngine.java:720)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at
org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.createGui(PartRenderingEngine.java:704)
at
org.eclipse.e4.ui.internal.workbench.PartServiceImpl$1.handleEvent(PartServiceImpl.java:104)
at
org.eclipse.e4.ui.services.internal.events.UIEventHandler$1.run(UIEventHandler.java:40)
at 
org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:233)
at 
org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:145)
at org.eclipse.swt.widgets.Display.syncExec(Display.java:5395)
at
org.eclipse.e4.ui.internal.workbench.swt.E4Application$1.syncExec(E4Application.java:211)
at
org.eclipse.e4.ui.services.internal.events.UIEventHandler.handleEvent(UIEventHandler.java:36)
at
org.eclipse.equinox.internal.event.EventHandlerWrapper.handleEvent(EventHandlerWrapper.java:201)
at
org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:197)
at
org.eclipse.equinox.internal.event.EventHandlerTracker.dispatchEvent(EventHandlerTracker.java:1)
at
org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:230)
at
org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:148)
at
org.eclipse.equinox.internal.event.EventAdminImpl.dispatchEvent(EventAdminImpl.java:135)
at
org.eclipse.equinox.internal.event.EventAdminImpl.sendEvent(EventAdminImpl.java:78)
at
org.eclipse.equinox.internal.event.EventComponent.sendEvent(EventComponent.java:39)
at
org.eclipse.e4.ui.services.internal.events.EventBroker.send(EventBroker.java:94)
at
org.eclipse.e4.ui.internal.workbench.UIEventPublisher.notifyChanged(UIEventPublisher.java:60)
at
org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:374)
at
org.eclipse.e4.ui.model.application.ui.impl.ElementContainerImpl.setSelectedElement(ElementContainerImpl.java:173)
at
org.eclipse.e4.ui.internal.workbench.ModelServiceImpl.showElementInWindow(ModelServiceImpl.java:617)
at
org.eclipse.e4.ui.internal.workbench.ModelServiceImpl.bringToTop(ModelServiceImpl.java:581)
at
org.eclipse.e4.ui.internal.workbench.PartServiceImpl.delegateBringToTop(PartServiceImpl.java:770)
at
org.eclipse.e4.ui.internal.workbench.PartServiceImpl.bringToTop(PartServiceImpl.java:401)
at
org.eclipse.e4.ui.internal.workbench.PartServiceImpl.showPart(PartServiceImpl.java:1214)
at
org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:3261)
at 
org.eclipse.ui.internal.WorkbenchPage.access$25(WorkbenchPage.java:3176)
at 
org.eclipse.ui.internal.WorkbenchPage$10.run(WorkbenchPage.java:3158)
at 
org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at 
org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:3153)
at 
org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:3117)
at 
org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:3107)
at org.eclipse.ui.ide.IDE.openEditor(IDE.java:563)
at org.eclipse.ui.ide.IDE.openEditor(IDE.java:518)
at 
org.eclipse.ui.actions.OpenFileAction.openFile(OpenFileAction.java:100)
at
org.eclipse.ui.actions.OpenSystemEditorAction.run(OpenSystemEditorAction.java:97)
at org.eclipse.ui.actions.RetargetAction.run(RetargetAction.java:225)
at
org.eclipse.ui.navigator.CommonNavigatorManager$2.open(CommonNavigatorManager.java:191)
at
org.eclipse.ui.OpenAndLinkWithEditorHelper$InternalListener.open(OpenAndLinkWithEditorHelper.java:46)
at
org.eclipse.jface.viewers.StructuredViewer$2.run(StructuredViewer.java:855)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:50)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:173)
at
org.eclipse.jface.viewers.StructuredViewer.fireOpen(StructuredViewer.java:852)
at
org.eclipse.jface.viewers.StructuredViewer.handleOpen(StructuredViewer.java:1169)
at 
org.eclipse.ui.navigator.CommonViewer.handleOpen(CommonViewer.java:451)
at 
org.eclipse.jface.util.OpenStrategy.fireOpenEvent(OpenStrategy.java:278)
at 
org.eclipse.jface.util.OpenStrategy.access$2(OpenStrategy.java:272)
at 
org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:313)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5208)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1340)
at 
org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4542)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4132)
at
org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.java:1119)
at
org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
at
org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1020)
at
org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:150)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:687)
at
org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
at
org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:604)
at 
org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:148)
at
org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:138)
at
org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:388)
at
org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:243)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:673)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:610)
at org.eclipse.equinox.launcher.Main.run(Main.java:1519)
at org.eclipse.equinox.launcher.Main.main(Main.java:1492)
Caused by: java.lang.ClassNotFoundException:
jdk.nashorn.internal.runtime.ECMAException cannot be found by
org.eclipse.wst.jsdt.core_2.0.0.v201605200022
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(ClassLoader.java:357)
... 124 more
~~~
Jonah Graham
Kichwa Coders Ltd.
www.kichwacoders.com
_______________________________________________
wtp-dev mailing list
wtp-dev@xxxxxxxxxxx
To change your delivery options, retrieve your password, or 
unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/wtp-dev