Java move refactoring: `IllegalStateException: Cannot use Elements.getTypeElement before the TaskEvent.Kind.ENTER finished event.`
- Dominant language
- Java
- Stars
- 3.1k
- Forks
- 935
- Avg merge
- 2d 3h
- Merged PRs (30d)
- 17
Description
### Apache NetBeans version
Apache NetBeans 16 release candidate
### What happened
16rc3. Running on JDK 17.0.4 but using source level 8. In a largish Maven project, I cut a class from the **Source Packages** view and pasted into another package. The **Move class** refactoring dialog opened; I click **Refactor** and then this is thrown:
```
java.lang.IllegalStateException: Cannot use Elements.getTypeElement before the TaskEvent.Kind.ENTER finished event.
at com.sun.tools.javac.model.JavacElements.ensureEntered(JavacElements.java:838)
at com.sun.tools.javac.model.JavacElements.doGetTypeElement(JavacElements.java:172)
at com.sun.tools.javac.model.JavacElements.getTypeElement(JavacElements.java:168)
at com.sun.tools.javac.model.JavacElements.getTypeElement(JavacElements.java:88)
at org.netbeans.modules.java.source.save.ElementOverlay.resolve(ElementOverlay.java:198)
at org.netbeans.modules.java.source.save.ElementOverlay.resolve(ElementOverlay.java:187)
at org.netbeans.modules.java.source.save.ElementOverlay.unnamedPackage(ElementOverlay.java:428)
at org.netbeans.modules.java.source.pretty.ImportAnalysis2.(ImportAnalysis2.java:95)
at org.netbeans.modules.java.source.pretty.ImportAnalysis2.(ImportAnalysis2.java:85)
at org.netbeans.api.java.source.WorkingCopy.processCurrentCompilationUnit(WorkingCopy.java:783)
at org.netbeans.api.java.source.WorkingCopy.getChanges(WorkingCopy.java:1321)
at org.netbeans.api.java.source.JavaSource$1.run(JavaSource.java:678)
at org.netbeans.api.java.source.JavaSource$1.run(JavaSource.java:665)
at org.netbeans.api.java.source.JavaSource$MultiTask.run(JavaSource.java:504)
at org.netbeans.modules.parsing.impl.TaskProcessor.callUserTask(TaskProcessor.java:586)
at org.netbeans.modules.parsing.api.ParserManager$MultiUserTaskAction.run(ParserManager.java:169)
at org.netbeans.modules.parsing.api.ParserManager$MultiUserTaskAction.run(ParserManager.java:140)
at org.netbeans.modules.parsing.impl.TaskProcessor$2.call(TaskProcessor.java:181)
at org.netbeans.modules.parsing.impl.TaskProcessor$2.call(TaskProcessor.java:178)
at org.netbeans.modules.masterfs.filebasedfs.utils.FileChangedManager.priorityIO(FileChangedManager.java:153)
at org.netbeans.modules.masterfs.providers.ProvidedExtensions.priorityIO(ProvidedExtensions.java:335)
at org.netbeans.modules.parsing.nb.DataObjectEnvFactory.runPriorityIO(DataObjectEnvFactory.java:118)
at org.netbeans.modules.parsing.impl.Utilities.runPriorityIO(Utilities.java:67)
at org.netbeans.modules.parsing.impl.TaskProcessor.runUserTask(TaskProcessor.java:178)
at org.netbeans.modules.parsing.api.ParserManager.parse(ParserManager.java:85)
at org.netbeans.api.java.source.JavaSource.runUserActionTaskImpl(JavaSource.java:454)
at org.netbeans.api.java.source.JavaSource.runUserActionTask(JavaSource.java:425)
at org.netbeans.api.java.source.JavaSource.runModificationTask(JavaSource.java:686)
at org.netbeans.modules.refactoring.java.spi.JavaRefactoringPlugin.processFiles(JavaRefactoringPlugin.java:323)
at org.netbeans.modules.refactoring.java.spi.JavaRefactoringPlugin.processFiles(JavaRefactoringPlugin.java:264)
at org.netbeans.modules.refactoring.java.spi.JavaRefactoringPlugin.processFiles(JavaRefactoringPlugin.java:246)
at org.netbeans.modules.refactoring.java.spi.JavaRefactoringPlugin.createAndAddElements(JavaRefactoringPlugin.java:338)
at org.netbeans.modules.refactoring.java.spi.JavaRefactoringPlugin.createAndAddElements(JavaRefactoringPlugin.java:354)
at org.netbeans.modules.refactoring.java.plugins.MoveFileRefactoringPlugin.prepare(MoveFileRefactoringPlugin.java:576)
[catch] at org.netbeans.modules.refactoring.api.AbstractRefactoring.pluginsPrepare2(AbstractRefactoring.java:417)
at org.netbeans.modules.refactoring.api.AbstractRefactoring.pluginsPrepare(AbstractRefactoring.java:401)
at org.netbeans.modules.refactoring.api.AbstractRefactoring.prepare(AbstractRefactoring.java:212)
at org.netbeans.modules.refactoring.spi.impl.ParametersPanel$Prepare.run(ParametersPanel.java:1063)
at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1418)
at org.netbeans.modules.openide.util.GlobalLookup.execute(GlobalLookup.java:45)
at org.openide.util.lookup.Lookups.executeWith(Lookups.java:278)
at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2033)
```
(I had recently renamed the same source file within a package, successfully.)
### How to reproduce
Unknown. Reproduces locally right now but not sure how to reconstruct in another environment.
### Did this work correctly in an earlier version?
No / Don't know
### Operating System
Linux
### JDK
17.0.4
### Apache NetBeans packaging
Apache NetBeans Snap Package
### Anything else
_No response_
### Are you willing to submit a pull request?
No
### Code of Conduct
Yes
Contributor guide
Research direction
Start with the stack trace in java.source.save.ElementOverlay.java and follow its calls through ImportAnalysis2, WorkingCopy, and MoveFileRefactoringPlugin. Try to reproduce the Java move refactoring with JDK 17 and source level 8, although the issue gives no reliable reproduction steps. Done means the move completes without the IllegalStateException.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- devtools
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 30/100