Skip to content
This repository has been archived by the owner on Apr 13, 2023. It is now read-only.

Intermittent "Initializing Java Tooling" error on launch #1866

Closed
fwgreen opened this issue Mar 4, 2017 · 10 comments
Closed

Intermittent "Initializing Java Tooling" error on launch #1866

fwgreen opened this issue Mar 4, 2017 · 10 comments

Comments

@fwgreen
Copy link

fwgreen commented Mar 4, 2017

After updating to 1.3.2, on rare occasion, when launching launching Eclipse, with a Ceylon project already open from a previous session, I've encountered...
initializingtoolingmessage

Windows 10, JDK 8 u121, Eclipse Mars 4.5.2

@jvasileff
Copy link

Same on "Oxygen Release (4.7.0)" w/Ceylon 1.3.2

@jvasileff
Copy link

Stack trace from a fresh install:

!ENTRY org.eclipse.ui.navigator 4 0 2017-07-01 10:05:21.065
!MESSAGE Failed to resolve com.redhat.ceylon.compiler.typechecker.analyzer.Warning
!STACK 0
com.redhat.ceylon.model.loader.ModelResolutionException: Failed to resolve com.redhat.ceylon.compiler.typechecker.analyzer.Warning
	at com.redhat.ceylon.model.loader.AbstractModelLoader$5.call(AbstractModelLoader.java:1908)
	at com.redhat.ceylon.model.loader.AbstractModelLoader$5.call(AbstractModelLoader.java:1816)
	at com.redhat.ceylon.model.loader.AbstractModelLoader$1.call(AbstractModelLoader.java:384)
	at com.redhat.ceylon.model.loader.AbstractModelLoader.embeddingSync(AbstractModelLoader.java:375)
	at com.redhat.ceylon.model.loader.AbstractModelLoader.synchronizedCall(AbstractModelLoader.java:380)
	at com.redhat.ceylon.model.loader.AbstractModelLoader.convertToDeclaration(AbstractModelLoader.java:1816)
	at com.redhat.ceylon.model.loader.AbstractModelLoader.convertToDeclaration(AbstractModelLoader.java:1811)
	at com.redhat.ceylon.model.loader.AbstractModelLoader.getDeclaration(AbstractModelLoader.java:5751)
	at com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor$Class.toProducedType(TypeDescriptor.java:314)
	at com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor$Class.toType(TypeDescriptor.java:306)
	at com.redhat.ceylon.compiler.java.runtime.metamodel.Metamodel.getProducedType(Metamodel.java:362)
	at com.redhat.ceylon.compiler.java.runtime.metamodel.Metamodel.getAppliedMetamodel(Metamodel.java:373)
	at ceylon.language.meta.typeLiteral_.typeLiteral(typeLiteral_.java:30)
	at com.redhat.ceylon.ide.common.model.CeylonProjectConfig.<init>(CeylonProjectConfig.ceylon:59)
	at com.redhat.ceylon.ide.common.model.BaseCeylonProject.getConfiguration(CeylonProject.ceylon:328)
	at com.redhat.ceylon.ide.common.model.BaseCeylonProject.newRepositoryManagerBuilder$canonical$(CeylonProject.ceylon:238)
	at com.redhat.ceylon.ide.common.model.BaseCeylonProject.newRepositoryManagerBuilder(CeylonProject.ceylon:191)
	at com.redhat.ceylon.ide.common.model.BaseCeylonProject.createRepositoryManager$priv$(CeylonProject.ceylon:253)
	at com.redhat.ceylon.ide.common.model.BaseCeylonProject.getRepositoryManager(CeylonProject.ceylon:293)
	at com.redhat.ceylon.eclipse.core.classpath.CeylonLanguageModuleContainer.<init>(CeylonLanguageModuleContainer.java:58)
	at com.redhat.ceylon.eclipse.core.classpath.CeylonLanguageModuleInitializer.initialize(CeylonLanguageModuleInitializer.java:23)
	at org.eclipse.jdt.internal.core.JavaModelManager.initializeContainer(JavaModelManager.java:3071)
	at org.eclipse.jdt.internal.core.JavaModelManager$10.run(JavaModelManager.java:2977)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2240)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2267)
	at org.eclipse.jdt.internal.core.JavaModelManager.initializeAllContainers(JavaModelManager.java:3017)
	at org.eclipse.jdt.internal.core.JavaModelManager.getClasspathContainer(JavaModelManager.java:2038)
	at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:3497)
	at org.eclipse.jdt.internal.core.JavaProject.resolveClasspath(JavaProject.java:2687)
	at org.eclipse.jdt.internal.core.JavaProject.resolveClasspath(JavaProject.java:2851)
	at org.eclipse.jdt.internal.core.JavaProject.getResolvedClasspath(JavaProject.java:1956)
	at org.eclipse.jdt.internal.core.DynamicProjectReferences.getDependentProjects(DynamicProjectReferences.java:34)
	at org.eclipse.core.internal.resources.ProjectDescription.computeDynamicReferencesForProject(ProjectDescription.java:950)
	at org.eclipse.core.internal.resources.ProjectDescription.getAllBuildConfigReferences(ProjectDescription.java:265)
	at org.eclipse.core.internal.resources.ProjectDescription.getAllReferences(ProjectDescription.java:221)
	at org.eclipse.core.internal.resources.Project.getReferencedProjects(Project.java:469)
	at org.eclipse.ui.actions.CloseUnrelatedProjectsAction.buildConnectedComponents(CloseUnrelatedProjectsAction.java:78)
	at org.eclipse.ui.actions.CloseUnrelatedProjectsAction.computeRelated(CloseUnrelatedProjectsAction.java:195)
	at org.eclipse.ui.actions.CloseUnrelatedProjectsAction.getSelectedResources(CloseUnrelatedProjectsAction.java:211)
	at org.eclipse.ui.actions.SelectionListenerAction.selectionIsOfType(SelectionListenerAction.java:240)
	at org.eclipse.ui.actions.CloseResourceAction.updateSelection(CloseResourceAction.java:187)
	at org.eclipse.ui.actions.BaseSelectionListenerAction.selectionChanged(BaseSelectionListenerAction.java:124)
	at org.eclipse.ui.internal.navigator.resources.actions.ResourceMgmtActionProvider.updateActionBars(ResourceMgmtActionProvider.java:254)
	at org.eclipse.ui.internal.navigator.resources.actions.ResourceMgmtActionProvider.fillActionBars(ResourceMgmtActionProvider.java:84)
	at org.eclipse.ui.navigator.NavigatorActionService$3.run(NavigatorActionService.java:265)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.ui.navigator.NavigatorActionService.fillActionBars(NavigatorActionService.java:258)
	at org.eclipse.ui.navigator.CommonNavigatorManager$UpdateActionBarsJob$1.run(CommonNavigatorManager.java:95)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.ui.navigator.CommonNavigatorManager$UpdateActionBarsJob.runInUIThread(CommonNavigatorManager.java:89)
	at org.eclipse.ui.progress.UIJob.lambda$0(UIJob.java:95)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:37)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:182)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4033)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3700)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1155)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1044)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
	at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:680)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:594)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:148)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:151)
	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:653)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:590)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1499)

@gavinking
Copy link
Contributor

Confirmed: I just started seeing this error after upgrading to Oxygen.

@gavinking
Copy link
Contributor

I can make that error go away, but then I just get this one instead:

com.redhat.ceylon.model.loader.ModelResolutionException: Failed to resolve ceylon.language.empty_
	at com.redhat.ceylon.model.loader.AbstractModelLoader$5.call(AbstractModelLoader.java:1920)
	at com.redhat.ceylon.model.loader.AbstractModelLoader$5.call(AbstractModelLoader.java:1828)
	at com.redhat.ceylon.model.loader.AbstractModelLoader$1.call(AbstractModelLoader.java:391)
	at com.redhat.ceylon.model.loader.AbstractModelLoader.embeddingSync(AbstractModelLoader.java:382)
	at com.redhat.ceylon.model.loader.AbstractModelLoader.synchronizedCall(AbstractModelLoader.java:387)
	at com.redhat.ceylon.model.loader.AbstractModelLoader.convertToDeclaration(AbstractModelLoader.java:1828)
	at com.redhat.ceylon.model.loader.AbstractModelLoader.convertToDeclaration(AbstractModelLoader.java:1823)
	at com.redhat.ceylon.model.loader.AbstractModelLoader.getDeclaration(AbstractModelLoader.java:5800)
	at com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor$Class.toProducedType(TypeDescriptor.java:318)
	at com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor$Class.toType(TypeDescriptor.java:310)
	at com.redhat.ceylon.compiler.java.runtime.metamodel.Metamodel.getProducedType(Metamodel.java:360)
	at com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor.is(TypeDescriptor.java:1516)
	at com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor$Class.is(TypeDescriptor.java:270)
	at com.redhat.ceylon.compiler.java.runtime.metamodel.Metamodel.isReified(Metamodel.java:325)
	at com.redhat.ceylon.compiler.java.Util.isReified(Util.java:80)
	at ceylon.language.Iterable$impl.sequence(Iterable.ceylon:289)
	at ceylon.language.impl.BaseIterable.sequence(bases.ceylon)
	at com.redhat.ceylon.ide.common.model.BaseCeylonProject.newRepositoryManagerBuilder$canonical$(CeylonProject.ceylon:247)
	at com.redhat.ceylon.ide.common.model.BaseCeylonProject.newRepositoryManagerBuilder(CeylonProject.ceylon:191)
	at com.redhat.ceylon.ide.common.model.BaseCeylonProject.createRepositoryManager$priv$(CeylonProject.ceylon:258)
	at com.redhat.ceylon.ide.common.model.BaseCeylonProject.getRepositoryManager(CeylonProject.ceylon:298)
	at com.redhat.ceylon.eclipse.core.classpath.CeylonLanguageModuleContainer.<init>(CeylonLanguageModuleContainer.java:58)
	at com.redhat.ceylon.eclipse.core.classpath.CeylonLanguageModuleInitializer.initialize(CeylonLanguageModuleInitializer.java:23)
	at org.eclipse.jdt.internal.core.JavaModelManager.initializeContainer(JavaModelManager.java:3071)
	at org.eclipse.jdt.internal.core.JavaModelManager.getClasspathContainer(JavaModelManager.java:2043)
	at org.eclipse.jdt.internal.core.ClasspathEntry.validateClasspathEntry(ClasspathEntry.java:2121)
	at org.eclipse.jdt.internal.core.ClasspathEntry.validateClasspathEntry(ClasspathEntry.java:2072)
	at org.eclipse.jdt.internal.core.ClasspathValidation.validate(ClasspathValidation.java:72)
	at org.eclipse.jdt.internal.core.ChangeClasspathOperation.classpathChanged(ChangeClasspathOperation.java:51)
	at org.eclipse.jdt.internal.core.SetContainerOperation.executeOperation(SetContainerOperation.java:111)
	at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:724)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2240)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2267)
	at org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:795)
	at org.eclipse.jdt.core.JavaCore.setClasspathContainer(JavaCore.java:5679)
	at com.redhat.ceylon.eclipse.core.classpath.CeylonProjectModulesContainer.resolveClasspath(CeylonProjectModulesContainer.java:326)
	at com.redhat.ceylon.eclipse.core.classpath.InitDependenciesJob.run(InitDependenciesJob.java:56)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:56)

So it looks like we have a major problem with the metamodel not being set up.

@davidfestal @FroMage I'm going to need your help here:

  1. in OSGi, what event is responsible for setting up the metamodel, and
  2. why might that be broken in Eclipse Oxygen?

@davidfestal
Copy link
Contributor

It seems to be a race condition that could sometimes happen in previous Eclipse versions, but now happens systematically under Oxygen when starting Eclipse with a Ceylon project opened. The Ceylon meta-model is registered in a Job, and it happens that, now, the Ceylon classpath-container initializer of a project is indirectly called by the JDT initialization before the end of Ceylon meta-model registration. And some Ceylon classes are involved in the implementation of the Classpath-container initializer.

I'll try to provide a fix for this asap.

@gavinking
Copy link
Contributor

Thanks David.

@lukedegruchy
Copy link

This is not intermittent for me but happens every single time I launch/restart Eclipse on Linux and macOS.

@gavinking
Copy link
Contributor

This is not intermittent for me but happens every single time I launch/restart Eclipse on Linux and macOS.

Right, me too.

@gavinking
Copy link
Contributor

This is fixed, but at the cost of unnecessary binary builds on almost every startup. We need to come back and fix that.

@gavinking
Copy link
Contributor

See #1882.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

5 participants