eclipse-jdt / eclipse-jdt/eclipse.jdt.core

NPE in String.toCharArray for API Analysis

Open
#4,448 14 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
237
Forks
195
Avg merge
1d 12h
Merged PRs (30d)
47

Description

eclipse.buildId=4.37.0.I20250905-0730
java.version=21.0.5
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_GB
Command-line arguments: -os win32 -ws win32 -arch x86_64 -clean -data E:\Development\Workspace

About six months ago, using 2024-12, an edit to the org.eclipse.ocl ewillink/2285 branch started to provoke Builder problems wrt the API Analysis. Since the API Analysis attempts to avoid unnecessary repetition, the popup is 'intermittent' as perceived. The logged error however seems solid wrt a clean of org.eclipse.ocl.pivot. The problem is still present in 2025-09.

(I make extensive use of `@NonNull`/`@Nullable`, including e.g. `@NonNull T @NonNull... args`).

Hopefully a little code reading around the stack trace will avoid the need to investigate a repro.
```
java.lang.NullPointerException: Cannot invoke "String.toCharArray()" because "typeSignature" is null
at org.eclipse.jdt.core.Signature.createArraySignature(Signature.java:1079)
at org.eclipse.pde.api.tools.internal.util.Signatures.getTypeSignature(Signatures.java:615)
at org.eclipse.pde.api.tools.internal.util.Signatures.getParametersTypeNames(Signatures.java:497)
at org.eclipse.pde.api.tools.internal.util.Signatures.getMethodSignatureFromNode(Signatures.java:467)
at org.eclipse.pde.api.tools.internal.provisional.scanner.TagScanner$Visitor.scanMethodJavaDoc(TagScanner.java:503)
at org.eclipse.pde.api.tools.internal.provisional.scanner.TagScanner$Visitor.visit(TagScanner.java:490)
at org.eclipse.jdt.core.dom.MethodDeclaration.accept0(MethodDeclaration.java:652)
at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:3312)
at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:3383)
at org.eclipse.jdt.core.dom.TypeDeclaration.accept0(TypeDeclaration.java:497)
at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:3312)
at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:3383)
at org.eclipse.jdt.core.dom.CompilationUnit.accept0(CompilationUnit.java:257)
at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:3312)
at org.eclipse.pde.api.tools.internal.provisional.scanner.TagScanner.scan(TagScanner.java:682)
at org.eclipse.pde.api.tools.internal.provisional.scanner.TagScanner.scan(TagScanner.java:638)
at org.eclipse.pde.api.tools.internal.ProjectApiDescription$TypeNode.refresh(ProjectApiDescription.java:237)
at org.eclipse.pde.api.tools.internal.ApiDescription.findNode(ApiDescription.java:417)
at org.eclipse.pde.api.tools.internal.ApiDescription.resolveAnnotations(ApiDescription.java:435)
at org.eclipse.pde.api.tools.internal.builder.IncrementalApiBuilder$ResourceDeltaVisitor.visit(IncrementalApiBuilder.java:165)
at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:78)
at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:92)
at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:92)
at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:92)
at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:92)
at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:92)
at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:92)
at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:92)
at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:92)
at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:92)
at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:61)
at org.eclipse.pde.api.tools.internal.builder.IncrementalApiBuilder.build(IncrementalApiBuilder.java:236)
at org.eclipse.pde.api.tools.internal.builder.ApiAnalysisBuilder.work(ApiAnalysisBuilder.java:452)
at org.eclipse.pde.api.tools.internal.builder.ApiAnalysisBuilder.build(ApiAnalysisBuilder.java:383)
at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:1109)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:299)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:355)
at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:449)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:47)
at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:452)
at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:564)
at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:512)
at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:594)
at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:208)
at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:309)
at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.