Bug 132613

Summary: NPE in java builder when trying to retrieve a file
Product: [Eclipse Project] JDT Reporter: Olivier Thomann <Olivier_Thomann>
Component: CoreAssignee: Kent Johnson <kent_johnson>
Status: VERIFIED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: john.arthorne
Version: 3.2   
Target Milestone: 3.2 M6   
Hardware: PC   
OS: Windows XP   
Whiteboard:

Description Olivier Thomann CLA 2006-03-20 20:29:31 EST
Using I0309, I got this exception in the log.
I don't have steps to reproduce.

java.lang.NullPointerException
        at
org.eclipse.core.internal.filesystem.InternalFileSystemCore.getStore(InternalFileSystemCore.java:104)
        at org.eclipse.core.filesystem.EFS.getStore(EFS.java:296)
        at org.eclipse.jdt.internal.core.util.Util.toLocalFile(Util.java:2044)
        at
org.eclipse.jdt.internal.core.builder.ClasspathJar.<init>(ClasspathJar.java:91)
        at
org.eclipse.jdt.internal.core.builder.ClasspathLocation.forLibrary(ClasspathLocation.java:38)
        at org.eclipse.jdt.internal.core.builder.State.read(State.java:255)
        at
org.eclipse.jdt.internal.core.builder.JavaBuilder.readState(JavaBuilder.java:125)
        at
org.eclipse.jdt.internal.core.JavaModelManager.readState(JavaModelManager.java:2586)
        at
org.eclipse.jdt.internal.core.JavaModelManager.getLastBuiltState(JavaModelManager.java:1365)
        at
org.eclipse.jdt.internal.core.builder.JavaBuilder.getLastState(JavaBuilder.java:367)
        at
org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:150)
        at
org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:593)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
        at
org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:168)
        at
org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:202)
        at
org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:231)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
        at
org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:234)
        at
org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:253)
        at
org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:282)
        at
org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143)
        at
org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:204)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:58)
org.eclipse.core.runtime.CoreException[2]: java.lang.NullPointerException
        at
org.eclipse.core.internal.filesystem.InternalFileSystemCore.getStore(InternalFileSystemCore.java:104)
        at org.eclipse.core.filesystem.EFS.getStore(EFS.java:296)
        at org.eclipse.jdt.internal.core.util.Util.toLocalFile(Util.java:2044)
        at
org.eclipse.jdt.internal.core.builder.ClasspathJar.<init>(ClasspathJar.java:91)
        at
org.eclipse.jdt.internal.core.builder.ClasspathLocation.forLibrary(ClasspathLocation.java:38)
        at org.eclipse.jdt.internal.core.builder.State.read(State.java:255)
        at
org.eclipse.jdt.internal.core.builder.JavaBuilder.readState(JavaBuilder.java:125)
        at
org.eclipse.jdt.internal.core.JavaModelManager.readState(JavaModelManager.java:2586)
        at
org.eclipse.jdt.internal.core.JavaModelManager.getLastBuiltState(JavaModelManager.java:1365)
        at
org.eclipse.jdt.internal.core.builder.JavaBuilder.getLastState(JavaBuilder.java:367)
        at
org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:150)
        at
org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:593)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
        at
org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:168)
        at
org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:202)
        at
org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:231)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
        at
org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:234)
        at
org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:253)
        at
org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:282)
        at
org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143)
        at
org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:204)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:58)
java.lang.NullPointerException
        at
org.eclipse.core.internal.filesystem.InternalFileSystemCore.getStore(InternalFileSystemCore.java:104)
        at org.eclipse.core.filesystem.EFS.getStore(EFS.java:296)
        at org.eclipse.jdt.internal.core.util.Util.toLocalFile(Util.java:2044)
        at
org.eclipse.jdt.internal.core.builder.ClasspathJar.<init>(ClasspathJar.java:91)
        at
org.eclipse.jdt.internal.core.builder.ClasspathLocation.forLibrary(ClasspathLocation.java:38)
        at org.eclipse.jdt.internal.core.builder.State.read(State.java:255)
        at
org.eclipse.jdt.internal.core.builder.JavaBuilder.readState(JavaBuilder.java:125)
        at
org.eclipse.jdt.internal.core.JavaModelManager.readState(JavaModelManager.java:2586)
        at
org.eclipse.jdt.internal.core.JavaModelManager.getLastBuiltState(JavaModelManager.java:1365)
        at
org.eclipse.jdt.internal.core.builder.JavaBuilder.getLastState(JavaBuilder.java:367)
        at
org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:150)
        at
org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:593)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
        at
org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:168)
        at
org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:202)
        at
org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:231)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
        at
org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:234)
        at
org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:253)
        at
org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:282)
        at
org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143)
        at
org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:204)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:58)
org.eclipse.core.runtime.CoreException[2]: java.lang.NullPointerException
        at
org.eclipse.core.internal.filesystem.InternalFileSystemCore.getStore(InternalFileSystemCore.java:104)
        at org.eclipse.core.filesystem.EFS.getStore(EFS.java:296)
        at org.eclipse.jdt.internal.core.util.Util.toLocalFile(Util.java:2044)
        at
org.eclipse.jdt.internal.core.builder.ClasspathJar.<init>(ClasspathJar.java:91)
        at
org.eclipse.jdt.internal.core.builder.ClasspathLocation.forLibrary(ClasspathLocation.java:38)
        at org.eclipse.jdt.internal.core.builder.State.read(State.java:255)
        at
org.eclipse.jdt.internal.core.builder.JavaBuilder.readState(JavaBuilder.java:125)
        at
org.eclipse.jdt.internal.core.JavaModelManager.readState(JavaModelManager.java:2586)
        at
org.eclipse.jdt.internal.core.JavaModelManager.getLastBuiltState(JavaModelManager.java:1365)
        at
org.eclipse.jdt.internal.core.builder.JavaBuilder.getLastState(JavaBuilder.java:367)
        at
org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:150)
        at
org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:593)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
        at
org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:168)
        at
org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:202)
        at
org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:231)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
        at
org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:234)
        at
org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:253)
        at
org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:282)
        at
org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143)
        at
org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:204)
        at org.eclipse.core.internal.jobs.Worker.run(Worker.java:58)
Comment 1 Kent Johnson CLA 2006-03-21 03:41:51 EST
John - any ideas?

Is this something we need to handle or is it your bug?
Comment 2 John Arthorne CLA 2006-03-27 10:27:49 EST
The problem is in ClasspathJar:

Util.toLocalFile(resource.getLocationURI(), null)

The NPE is caused by resource.getLocationURI() returning null. This means the resource's project does not exist.
Comment 3 Kent Johnson CLA 2006-03-28 10:54:55 EST
Added NPE check that was removed when moving from getLocation() to getLocationURI()
Comment 4 Frederic Fusier CLA 2006-03-29 05:40:23 EST
Verified for 3.2 M6 using build I20060329-0010.