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