Creating a class produces a JavaModelException
In a new project, create an object Foo in package a. The class is created, but the Error Log contains the following entry:
Java Model Exception: Java Model Status [Foo$ [in [Working copy] Foo.scala [in a [in src [in a]]]] does not exist]
It's worth noting that after creating the class, the editor's state is such that the source file isn't saved (this should of course not be the case).
Furthermore, trying to delete the above created class results in an additional exception pushed to the Error Log (and the Package Explorer displays a phantom source file `Foo.scala` with a `J` icon, instead of a `S`. Trying to open it fires up an editor with the message "File XXX does not exist")
Java Model Exception: Java Model Status [Foo$ [in [Working copy] Foo.scala [in a [in src [in a]]]] does not exist]
It's worth noting that after creating the class, the editor's state is such that the source file isn't saved (this should of course not be the case).
Furthermore, trying to delete the above created class results in an additional exception pushed to the Error Log (and the Package Explorer displays a phantom source file `Foo.scala` with a `J` icon, instead of a `S`. Trying to open it fires up an editor with the message "File XXX does not exist")
org.eclipse.core.internal.resources.ResourceException: Resource '/aaa/src/aaa/Bar.scala' does not exist.
at org.eclipse.core.internal.resources.Resource.checkExists(Resource.java:341)
at org.eclipse.core.internal.resources.Resource.checkAccessible(Resource.java:215)
at org.eclipse.core.internal.resources.Resource.findMaxProblemSeverity(Resource.java:1051)
at org.eclipse.jdt.ui.ProblemsLabelDecorator.getPackageErrorTicksFromMarkers(ProblemsLabelDecorator.java:337)
at org.eclipse.jdt.ui.ProblemsLabelDecorator.computeAdornmentFlags(ProblemsLabelDecorator.java:212)
at org.eclipse.jdt.internal.ui.viewsupport.TreeHierarchyLayoutProblemsDecorator.computePackageAdornmentFlags(TreeHierarchyLayoutProblemsDecorator.java:47)
at org.eclipse.jdt.internal.ui.viewsupport.TreeHierarchyLayoutProblemsDecorator.computeAdornmentFlags(TreeHierarchyLayoutProblemsDecorator.java:56)
at org.eclipse.jdt.internal.ui.packageview.PackageExplorerProblemsDecorator.computeAdornmentFlags(PackageExplorerProblemsDecorator.java:35)
at org.eclipse.jdt.ui.ProblemsLabelDecorator.decorateImage(ProblemsLabelDecorator.java:170)
at org.eclipse.jdt.internal.ui.viewsupport.JavaUILabelProvider.decorateImage(JavaUILabelProvider.java:134)
at org.eclipse.jdt.internal.ui.viewsupport.JavaUILabelProvider.getImage(JavaUILabelProvider.java:149)
at org.eclipse.jdt.internal.ui.packageview.PackageExplorerLabelProvider.getImage(PackageExplorerLabelProvider.java:140)
at org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.getImage(DelegatingStyledCellLabelProvider.java:184)
at org.eclipse.jface.viewers.DecoratingStyledCellLabelProvider.getImage(DecoratingStyledCellLabelProvider.java:167)
at org.eclipse.jface.viewers.DelegatingStyledCellLabelProvider.update(DelegatingStyledCellLabelProvider.java:118)
at org.eclipse.jface.viewers.DecoratingStyledCellLabelProvider.update(DecoratingStyledCellLabelProvider.java:134)
at org.eclipse.jface.viewers.ViewerColumn.refresh(ViewerColumn.java:152)
at org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(AbstractTreeViewer.java:953)
at org.eclipse.jface.viewers.AbstractTreeViewer$UpdateItemSafeRunnable.run(AbstractTreeViewer.java:113)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:49)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
at org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem(AbstractTreeViewer.java:1033)
at org.eclipse.jface.viewers.StructuredViewer$UpdateItemSafeRunnable.run(StructuredViewer.java:485)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:49)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
at org.eclipse.jface.viewers.StructuredViewer.updateItem(StructuredViewer.java:2167)
at org.eclipse.jface.viewers.StructuredViewer.internalUpdate(StructuredViewer.java:2150)
at org.eclipse.jface.viewers.StructuredViewer.update(StructuredViewer.java:2089)
at org.eclipse.jface.viewers.ColumnViewer.update(ColumnViewer.java:561)
at org.eclipse.jface.viewers.StructuredViewer.update(StructuredViewer.java:2033)
at org.eclipse.jface.viewers.StructuredViewer.handleLabelProviderChanged(StructuredViewer.java:1191)
at org.eclipse.jdt.internal.ui.viewsupport.ProblemTreeViewer.handleLabelProviderChanged(ProblemTreeViewer.java:223)
at org.eclipse.jface.viewers.ContentViewer$1.labelProviderChanged(ContentViewer.java:97)
at org.eclipse.jface.viewers.BaseLabelProvider$1.run(BaseLabelProvider.java:74)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:49)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
at org.eclipse.jface.viewers.BaseLabelProvider.fireLabelProviderChanged(BaseLabelProvider.java:72)
at org.eclipse.jface.viewers.DecoratingStyledCellLabelProvider$1.labelProviderChanged(DecoratingStyledCellLabelProvider.java:77)
at org.eclipse.ui.internal.decorators.DecoratorManager$1.run(DecoratorManager.java:430)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.ui.internal.decorators.DecoratorManager.fireListener(DecoratorManager.java:428)
at org.eclipse.ui.internal.decorators.DecorationScheduler$3.runInUIThread(DecorationScheduler.java:530)
at org.eclipse.ui.progress.UIJob$1.run(UIJob.java:95)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3976)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3653)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1113)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:997)
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:138)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:610)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:567)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:354)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:181)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:636)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591)
at org.eclipse.equinox.launcher.Main.run(Main.java:1450)
Leave a comment
on 2013-12-16 19:27 *
By Mirco Dotta
Description changed from In a new project, create an... to In a new project, create an...
on 2013-12-16 19:40 *
By Mirco Dotta
Description changed from In a new project, create an... to In a new project, create an...
on 2013-12-17 15:57 *
By Mirco Dotta
So, the exception is thrown by this call https://github.com/scala-ide/scala-ide/blob/master/org.scala-ide.sdt.core/src/scala/tools/eclipse/wizards/AbstractNewElementWizardPage.scala#L457, because the `IJavaModelStatus` is corrupted (status.isOK returns false, and a JavaModelException is thrown).
I believe the quiescence PR (https://github.com/scala-ide/scala-ide/pull/562) is responsible for the regression, and maybe also this commit https://github.com/scala-ide/scala-ide/commit/ee2f5a7606647b0380fad1820d74b29ff01a096c
It may be best if @huitseeker could have a look at this as he is has a better understanding of how the Java and Scala reconciler work together. For instance, why calling `ScalaSourceFile.scheduleReconcile` ends up calling the Java reconciler and not the Scala one?
Also this call to the Java reconciler in AbstractNewElementWizardPage is odd https://github.com/scala-ide/scala-ide/blob/master/org.scala-ide.sdt.core/src/scala/tools/eclipse/wizards/AbstractNewElementWizardPage.scala#L365, though it may be needed to correctly side-effect the Java Model - but that needs to be proved.
I believe the quiescence PR (https://github.com/scala-ide/scala-ide/pull/562) is responsible for the regression, and maybe also this commit https://github.com/scala-ide/scala-ide/commit/ee2f5a7606647b0380fad1820d74b29ff01a096c
It may be best if @huitseeker could have a look at this as he is has a better understanding of how the Java and Scala reconciler work together. For instance, why calling `ScalaSourceFile.scheduleReconcile` ends up calling the Java reconciler and not the Scala one?
Also this call to the Java reconciler in AbstractNewElementWizardPage is odd https://github.com/scala-ide/scala-ide/blob/master/org.scala-ide.sdt.core/src/scala/tools/eclipse/wizards/AbstractNewElementWizardPage.scala#L365, though it may be needed to correctly side-effect the Java Model - but that needs to be proved.
on 2013-12-17 17:25 *
By Mirco Dotta
Plus, the regression happened after 4.0.0-M1.
on 2013-12-17 20:46 *
By huitseeker
Something not so different happened on progfun 8 months ago:
https://github.com/jmazin/progfun/blob/master/.metadata/.log#L352
https://github.com/jmazin/progfun/blob/master/.metadata/.log#L352
on 2014-01-10 14:04 *
By Mirco Dotta
@huitseeker Maybe that file really didn't exist indeed (meaning that I would not exclude the stacktrace you linked may be caused by a different bug). The issue described in this ticket occurs when creating a source file, which is something new, as far as I know.
on 2014-01-21 15:15 *
By Iulian Dragos
Assigned to set to Iulian Dragos
Status changed from Accepted to Fixed
In scala-ide:b98b66ed5697348a849755dc586b798bca54b093 Removed non-functional code for code generation.
Removed support for generating stubs for constructors
and inherited abstract methods:
- the UI doesn't show the section anymore
- ported constructor stubs to the presentation compiler, but
- deleted code based on JDT type hierarchy for implementing
This should fix JavaModelExceptions on class creation.
Fixed #1002006