apache / apache/netbeans

Maven Project unloadable [class java.util.HashMap$Node cannot be cast to class java.util.HashMap$TreeNode]

Open
#4,219 3 comments 0 reactions 0 assignees View on GitHub
kind:bug Maven
Dominant language
Java
Stars
3.1k
Forks
935
Avg merge
2d 3h
Merged PRs (30d)
17

Description

### Apache NetBeans version

Apache NetBeans latest daily build

### What happened

While opening a Maven project with Apache NetBeans 14 some modules I got this exception:

```
INFO [org.netbeans.modules.maven.problems.MavenModelProblemsProvider]: Exception thrown while loading maven project at C:\[PATH_TO_MAVEN_MODULE]@4ab62a4e:92fc990
java.lang.ClassCastException: class java.util.HashMap$Node cannot be cast to class java.util.HashMap$TreeNode (java.util.HashMap$Node and java.util.HashMap$TreeNode are in module java.base of loader 'bootstrap')
at java.base/java.util.HashMap$TreeNode.moveRootToFront(HashMap.java:1900)
at java.base/java.util.HashMap$TreeNode.putTreeVal(HashMap.java:2079)
at java.base/java.util.HashMap.putVal(HashMap.java:634)
at java.base/java.util.HashMap.put(HashMap.java:608)
at java.base/java.util.HashSet.add(HashSet.java:220)
at org.apache.maven.model.validation.DefaultModelValidator.validateId(DefaultModelValidator.java:852)
at org.apache.maven.model.validation.DefaultModelValidator.validateEffectiveDependency(DefaultModelValidator.java:664)
at org.apache.maven.model.validation.DefaultModelValidator.validateEffectiveDependencies(DefaultModelValidator.java:588)
at org.apache.maven.model.validation.DefaultModelValidator.validateEffectiveModel(DefaultModelValidator.java:378)
at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:564)
at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:454)
at org.apache.maven.model.building.DefaultModelBuilder.importDependencyManagement(DefaultModelBuilder.java:1381)
at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:544)
at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:454)
at org.apache.maven.model.building.DefaultModelBuilder.importDependencyManagement(DefaultModelBuilder.java:1381)
at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:544)
at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:454)
at org.apache.maven.model.building.DefaultModelBuilder.importDependencyManagement(DefaultModelBuilder.java:1381)
at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:544)
at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:454)
at org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:267)
at org.netbeans.modules.maven.embedder.impl.NBModelBuilder.build(NBModelBuilder.java:53)
at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(DefaultArtifactDescriptorReader.java:293)
at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor(DefaultArtifactDescriptorReader.java:171)
at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.resolveCachedArtifactDescriptor(DefaultDependencyCollector.java:538)
at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.getArtifactDescriptorResult(DefaultDependencyCollector.java:523)
at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency(DefaultDependencyCollector.java:410)
at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.processDependency(DefaultDependencyCollector.java:362)
at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.process(DefaultDependencyCollector.java:349)
at org.eclipse.aether.internal.impl.collect.DefaultDependencyCollector.collectDependencies(DefaultDependencyCollector.java:254)
at org.eclipse.aether.internal.impl.DefaultRepositorySystem.collectDependencies(DefaultRepositorySystem.java:284)
at org.apache.maven.project.DefaultProjectDependenciesResolver.resolve(DefaultProjectDependenciesResolver.java:170)
at org.apache.maven.project.DefaultProjectBuilder.resolveDependencies(DefaultProjectBuilder.java:227)
at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:200)
at org.apache.maven.project.DefaultProjectBuilder.build(DefaultProjectBuilder.java:124)
at org.netbeans.modules.maven.embedder.MavenEmbedder.readProjectWithDependencies(MavenEmbedder.java:240)
at org.netbeans.modules.maven.modelcache.MavenProjectCache.loadOriginalMavenProject(MavenProjectCache.java:212)
at org.netbeans.modules.maven.modelcache.MavenProjectCache.access$100(MavenProjectCache.java:62)
at org.netbeans.modules.maven.modelcache.MavenProjectCache$2.run(MavenProjectCache.java:107)
at org.netbeans.modules.maven.modelcache.MavenProjectCache$2.run(MavenProjectCache.java:95)
at org.netbeans.modules.openide.util.DefaultMutexImplementation.writeAccess(DefaultMutexImplementation.java:229)
at org.openide.util.Mutex.writeAccess(Mutex.java:252)
at org.netbeans.modules.maven.modelcache.MavenProjectCache.getMavenProject(MavenProjectCache.java:95)
at org.netbeans.modules.maven.NbMavenProjectImpl.loadOriginalMavenProject(NbMavenProjectImpl.java:473)
at org.netbeans.modules.maven.NbMavenProjectImpl.getOriginalMavenProject(NbMavenProjectImpl.java:414)
at org.netbeans.modules.maven.api.NbMavenProject.getMavenProject(NbMavenProject.java:286)
at org.netbeans.modules.maven.NbMavenProjectImpl$PackagingTypeDependentLookup.check(NbMavenProjectImpl.java:931)
at org.netbeans.modules.maven.NbMavenProjectImpl$PackagingTypeDependentLookup.(NbMavenProjectImpl.java:886)
at org.netbeans.modules.maven.NbMavenProjectImpl.(NbMavenProjectImpl.java:263)
at org.netbeans.modules.maven.NbMavenProjectFactory.loadProject(NbMavenProjectFactory.java:95)
at org.netbeans.modules.projectapi.nb.NbProjectManager.createProject(NbProjectManager.java:376)
at org.netbeans.modules.projectapi.nb.NbProjectManager.access$300(NbProjectManager.java:69)
at org.netbeans.modules.projectapi.nb.NbProjectManager$2.run(NbProjectManager.java:289)
at org.netbeans.modules.projectapi.nb.NbProjectManager$2.run(NbProjectManager.java:218)
at org.netbeans.modules.openide.util.DefaultMutexImplementation.readAccess(DefaultMutexImplementation.java:188)
at org.openide.util.Mutex.readAccess(Mutex.java:231)
at org.netbeans.modules.projectapi.nb.NbProjectManager.findProject(NbProjectManager.java:218)
at org.netbeans.api.project.ProjectManager.findProject(ProjectManager.java:142)
at org.netbeans.modules.projectapi.SimpleFileOwnerQueryImplementation.getOwner(SimpleFileOwnerQueryImplementation.java:144)
at org.netbeans.modules.projectapi.SimpleFileOwnerQueryImplementation.getOwner(SimpleFileOwnerQueryImplementation.java:93)
at org.netbeans.api.project.FileOwnerQuery.getOwner(FileOwnerQuery.java:125)
at org.netbeans.modules.projectapi.ProjectSharabilityQuery2.getSharability(ProjectSharabilityQuery2.java:40)
at org.netbeans.api.queries.SharabilityQuery.getSharability(SharabilityQuery.java:152)
at org.netbeans.modules.git.utils.GitUtils.isIgnored(GitUtils.java:227)
[catch] at org.netbeans.modules.git.FileStatusCache$IgnoredFilesHandler.run(FileStatusCache.java:851)
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

_No response_

### Did this work correctly in an earlier version?

Apache NetBeans 13

### Operating System

Windows 10

### JDK

OpenJDK Runtime Environment 11.0.15+9-LTS

### Apache NetBeans packaging

Apache NetBeans provided installer

### Anything else

_No response_

### Are you willing to submit a pull request?

Yes

### Code of Conduct

Yes

Contributor guide

Open the contributing guide

Research direction

Start with org.apache.maven.model.validation.DefaultModelValidator.validateId in the stack trace, then follow the NetBeans Maven entry points MavenEmbedder.readProjectWithDependencies and MavenProjectCache.loadOriginalMavenProject. Reproduce by opening the affected Maven project with NetBeans and JDK 11; done means the project loads without the ClassCastException.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
build-system
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.