Package renaming fails: Cannot invoke "org.openide.filesystems.FileObject.isFolder()" because "fo" is null
- Dominant language
- Java
- Stars
- 3.1k
- Forks
- 935
- Avg merge
- 2d 3h
- Merged PRs (30d)
- 17
Description
### Apache NetBeans version
Apache NetBeans 15 release candidate
### What happened
Before the error occurred, I had renamed (by means of refactoring) lots of packages in my project tree. That actions worked fine until this error came up. Now, I can't rename any package.
This is occurring in a Java EE project built with Maven (with multiple modules). Specifically, this is happening in the EJB module. If I try to rename a package in the Web module, it still works OK.
Although this time the bug has affected the EJB module, I think that the same error has came up in the Web module in the past (in a similar context: massive renaming). The effects have been the same.
Restarting the IDE doesn't change a thing.
This is a screenshot of the modal window that appears:

This is the full exception stack trace:
```
SEVERE [org.openide.util.Exceptions]
java.lang.NullPointerException: Cannot invoke "org.openide.filesystems.FileObject.isFolder()" because "fo" is null
at org.netbeans.modules.refactoring.java.plugins.MoveFileRefactoringPlugin.getTargetPackageName(MoveFileRefactoringPlugin.java:620)
at org.netbeans.modules.refactoring.java.plugins.MoveTransformer.getTargetPackageName(MoveTransformer.java:263)
at org.netbeans.modules.refactoring.java.plugins.MoveTransformer.visitImport(MoveTransformer.java:406)
at org.netbeans.modules.refactoring.java.plugins.MoveTransformer.visitImport(MoveTransformer.java:47)
at com.sun.tools.javac.tree.JCTree$JCImport.accept(JCTree.java:683)
at com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:86)
at org.netbeans.modules.refactoring.java.spi.RefactoringVisitor.scan(RefactoringVisitor.java:193)
at org.netbeans.modules.refactoring.java.spi.RefactoringVisitor.scan(RefactoringVisitor.java:77)
at com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:96)
at com.sun.source.util.TreeScanner.scan(TreeScanner.java:111)
at com.sun.source.util.TreeScanner.scanAndReduce(TreeScanner.java:119)
at com.sun.source.util.TreeScanner.visitCompilationUnit(TreeScanner.java:151)
at org.netbeans.modules.refactoring.java.plugins.MoveTransformer.visitCompilationUnit(MoveTransformer.java:320)
at org.netbeans.modules.refactoring.java.plugins.MoveTransformer.visitCompilationUnit(MoveTransformer.java:47)
at com.sun.tools.javac.tree.JCTree$JCCompilationUnit.accept(JCTree.java:614)
at com.sun.source.util.TreePathScanner.scan(TreePathScanner.java:86)
at org.netbeans.modules.refactoring.java.spi.RefactoringVisitor.scan(RefactoringVisitor.java:193)
at org.netbeans.modules.refactoring.java.spi.JavaRefactoringPlugin$TransformTask.run(JavaRefactoringPlugin.java:455)
at org.netbeans.modules.refactoring.java.spi.JavaRefactoringPlugin$TransformTask.run(JavaRefactoringPlugin.java:420)
at org.netbeans.modules.refactoring.java.spi.JavaRefactoringPlugin.lambda$processFiles$1(JavaRefactoringPlugin.java:325)
at org.netbeans.api.java.source.JavaSource$1.run(JavaSource.java:675)
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)
```
### How to reproduce
I've tried hard but have not been able to reproduce this error yet. I only know that this usually happens when I do a massive renaming of packages and classes. I don't know what triggers it.
### Did this work correctly in an earlier version?
Apache NetBeans 12.3 or earlier
### Operating System
Debian GNU/Linux 11.5 (Bullseye)
### JDK
OpenJDK Runtime Environment (build 17.0.4+8-Debian-1deb11u1)
### Apache NetBeans packaging
Apache NetBeans binary zip
### Anything else
These are the plug-ins that I've in my install:
* Color Codes Preview
* JavaFX Implementation for Linux
* NetBeans Case Converter
* QuickOpener
### Are you willing to submit a pull request?
No
### Code of Conduct
Yes
Contributor guide
Research direction
Start at org.netbeans.modules.refactoring.java.plugins.MoveFileRefactoringPlugin.java:620, then follow the calls from MoveTransformer.getTargetPackageName and visitImport in the stack trace. Try package and class renaming in a Maven Java EE project with multiple modules, especially after massive renaming. Done means package refactoring no longer throws the null-pointer exception and the rename completes successfully.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- developer-experience, devtools
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100