eclipse / xtext

Eclipse Xtext™ is a language development framework
http://www.eclipse.org/Xtext
Eclipse Public License 2.0
766 stars 320 forks source link

Invalid classpath container: 'JUnit 4' in project 'org.eclipse.xtext.xbase.lib.tests' #3178

Closed cdietrich closed 2 weeks ago

cdietrich commented 2 weeks ago

Invalid classpath container: 'JUnit 4' in project 'org.eclipse.xtext.xbase.lib.tests'

no idea what causes this but saw it on multiple machines

cdietrich commented 2 weeks ago

git grep "org.eclipse.jdt.junit.JUNIT_CONTAINER/4" org.eclipse.xtend.ide/src/org/eclipse/xtend/ide/buildpath/Junit4LibClasspathAdder.java: public static final IPath JUNIT4_LIBRARY_PATH = new Path("org.eclipse.jdt.junit.JUNIT_CONTAINER/4"); org.eclipse.xtext.tests/xtext.tests.launch: org.eclipse.xtext.xbase.lib.tests/.classpath:

cdietrich commented 2 weeks ago

@iloveeclipse do you know any upstream changes that could cause this

cdietrich commented 2 weeks ago
grafik
cdietrich commented 2 weeks ago

there is also

java.lang.IllegalStateException: Unable to compute bundle location for 'org.hamcrest' with range [2.2.0,2.3.0)
    at org.eclipse.jdt.internal.junit.buildpath.BuildPathSupport$JUnitPluginDescription.getLibraryEntry(BuildPathSupport.java:236)
    at org.eclipse.jdt.internal.junit.buildpath.BuildPathSupport.getHamcrestLibraryEntry(BuildPathSupport.java:435)
    at org.eclipse.jdt.internal.junit.buildpath.JUnitContainerInitializer.getNewContainer(JUnitContainerInitializer.java:123)
    at org.eclipse.jdt.internal.junit.buildpath.JUnitContainerInitializer.initialize(JUnitContainerInitializer.java:108)
    at org.eclipse.jdt.internal.core.JavaModelManager.initializeContainer(JavaModelManager.java:3285)
    at org.eclipse.jdt.internal.core.JavaModelManager$11.run(JavaModelManager.java:3173)
    at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2451)
    at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2476)
    at org.eclipse.jdt.internal.core.JavaModelManager.initializeAllContainers(JavaModelManager.java:3231)
    at org.eclipse.jdt.internal.core.JavaModelManager.getClasspathContainer(JavaModelManager.java:2207)
    at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:4008)
    at org.eclipse.jdt.internal.ui.wizards.buildpaths.CPListElement.create(CPListElement.java:725)
    at org.eclipse.jdt.internal.ui.wizards.buildpaths.CPListElement.create(CPListElement.java:710)
    at org.eclipse.jdt.internal.ui.wizards.buildpaths.LibrariesWorkbookPage.openContainerSelectionDialog(LibrariesWorkbookPage.java:1332)
    at org.eclipse.jdt.internal.ui.wizards.buildpaths.LibrariesWorkbookPage.libaryPageCustomButtonPressed(LibrariesWorkbookPage.java:468)
    at org.eclipse.jdt.internal.ui.wizards.buildpaths.LibrariesWorkbookPage$LibrariesAdapter.customButtonPressed(LibrariesWorkbookPage.java:412)
    at org.eclipse.jdt.internal.ui.wizards.dialogfields.TreeListDialogField.buttonPressed(TreeListDialogField.java:177)
    at org.eclipse.jdt.internal.ui.wizards.dialogfields.TreeListDialogField.doButtonSelected(TreeListDialogField.java:412)
    at org.eclipse.jdt.internal.ui.wizards.dialogfields.TreeListDialogField$2.widgetSelected(TreeListDialogField.java:373)
    at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:265)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
    at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4660)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1622)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1645)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1630)
    at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1392)
    at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4427)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4003)
    at org.eclipse.jface.window.Window.runEventLoop(Window.java:823)
    at org.eclipse.jface.window.Window.open(Window.java:799)
    at org.eclipse.ui.dialogs.PropertyDialogAction.run(PropertyDialogAction.java:154)
    at org.eclipse.jface.action.Action.runWithEvent(Action.java:474)
    at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:581)
    at org.eclipse.jface.action.ActionContributionItem.lambda$4(ActionContributionItem.java:415)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
    at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4660)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1622)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1645)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1630)
    at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1392)
    at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4427)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4003)
    at org.eclipse.jface.window.Window.runEventLoop(Window.java:823)
    at org.eclipse.jface.window.Window.open(Window.java:799)
    at org.eclipse.oomph.setup.ui.wizards.SetupWizard.openDialog(SetupWizard.java:776)
    at org.eclipse.oomph.setup.ui.wizards.SetupWizard$Updater.openDialog(SetupWizard.java:1802)
    at org.eclipse.oomph.setup.ui.wizards.SetupWizard$Updater.perform(SetupWizard.java:1818)
    at org.eclipse.oomph.setup.presentation.handlers.PerformHandler.run(PerformHandler.java:52)
    at org.eclipse.oomph.setup.presentation.handlers.AbstractDropdownItemHandler.execute(AbstractDropdownItemHandler.java:51)
    at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:277)
    at org.eclipse.ui.internal.handlers.E4HandlerProxy.execute(E4HandlerProxy.java:98)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
    at java.base/java.lang.reflect.Method.invoke(Method.java:580)
    at org.eclipse.e4.core.internal.di.MethodRequestor.execute(MethodRequestor.java:56)
    at org.eclipse.e4.core.internal.di.InjectorImpl.invokeUsingClass(InjectorImpl.java:299)
    at org.eclipse.e4.core.internal.di.InjectorImpl.invoke(InjectorImpl.java:233)
    at org.eclipse.e4.core.contexts.ContextInjectionFactory.invoke(ContextInjectionFactory.java:174)
    at org.eclipse.e4.core.commands.internal.HandlerServiceHandler.execute(HandlerServiceHandler.java:165)
    at org.eclipse.core.commands.Command.executeWithChecks(Command.java:488)
    at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:485)
    at org.eclipse.e4.core.commands.internal.HandlerServiceImpl.executeHandler(HandlerServiceImpl.java:204)
    at org.eclipse.e4.ui.workbench.renderers.swt.HandledContributionItem.executeItem(HandledContributionItem.java:444)
    at org.eclipse.e4.ui.workbench.renderers.swt.AbstractContributionItem.handleWidgetSelection(AbstractContributionItem.java:442)
    at org.eclipse.e4.ui.workbench.renderers.swt.AbstractContributionItem.lambda$2(AbstractContributionItem.java:464)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
    at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4660)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1622)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1645)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1630)
    at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1392)
    at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4427)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4003)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1151)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
    at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1042)
    at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
    at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:639)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:339)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:546)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:173)
    at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:208)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:143)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:109)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:439)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:271)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
    at java.base/java.lang.reflect.Method.invoke(Method.java:580)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:668)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:605)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1481)
cdietrich commented 2 weeks ago

cc @HannesWell maybe you have an idea too

cdietrich commented 2 weeks ago

maybe https://github.com/eclipse-jdt/eclipse.jdt.ui/pull/706/files cc @merks

cdietrich commented 2 weeks ago

config dialog shows

Id: org.hamcrest, Version: 3.0.0, Location: reference:file:/Users/dietrich/.p2/pool/plugins/org.hamcrest_3.0.0.jar Id: org.hamcrest.core, Version: 2.2.0.v20230809-1000, Location: reference:file:/Users/dietrich/.p2/pool/plugins/org.hamcrest.core_2.2.0.v20230809-1000.jar Id: org.hamcrest.library, Version: 2.2.0.v20230809-1000, Location: reference:file:/Users/dietrich/.p2/pool/plugins/org.hamcrest.library_2.2.0.v20230809-1000.jar

merks commented 2 weeks ago

I think the mere presence of org.hamcrest 3.0 in the target platform causes problems. Hopefully addressed by this pr

https://github.com/eclipse-jdt/eclipse.jdt.ui/pull/1611

Even the emf build broke but I changed this

https://github.com/eclipse-emf/org.eclipse.emf/commit/268292da4d36f4281056e01a20fc37b2389d92e3

HannesWell commented 2 weeks ago

I think the mere presence of org.hamcrest 3.0 in the target platform causes problems. Hopefully addressed by this pr

https://github.com/eclipse-jdt/eclipse.jdt.ui/pull/1611

Yes that is intended to fix this issue.

But just for clarification, hamcrest 3.0 has to be present in the installation. The JUnit container takes the hamcrest bundle from the installation and not from the TP.

merks commented 2 weeks ago

I see. That’s a confusing. 🫤

HannesWell commented 2 weeks ago

I see. That’s a confusing. 🫤

Yes. But one reason is probably that JDT does not know PDE (at least at that place) and therefore has no access to the TP.