apache / apache/netbeans

Package renaming fails: Cannot invoke "org.openide.filesystems.FileObject.isFolder()" because "fo" is null

Open
#4,627 0 comments 0 reactions 0 assignees View on GitHub
Java kind:bug needs:triage
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:

![Modal window on error](https://user-images.githubusercontent.com/2098654/189593325-59c6a474-4c88-46a5-8229-0080d6fc67df.png)

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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.