Bug 543125 - avoid NPE's on classpath resolving

Change-Id: Ifc35e316b07e0a7fbe4704c199720a7d20c9b119
Signed-off-by: Andrey Loskutov <loskutov@gmx.de>
diff --git a/org.eclipse.jdt.launching/META-INF/MANIFEST.MF b/org.eclipse.jdt.launching/META-INF/MANIFEST.MF
index 81987a5..d490203 100644
--- a/org.eclipse.jdt.launching/META-INF/MANIFEST.MF
+++ b/org.eclipse.jdt.launching/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %pluginName
 Bundle-SymbolicName: org.eclipse.jdt.launching; singleton:=true
-Bundle-Version: 3.12.0.qualifier
+Bundle-Version: 3.12.100.qualifier
 Bundle-Activator: org.eclipse.jdt.internal.launching.LaunchingPlugin
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
diff --git a/org.eclipse.jdt.launching/launching/org/eclipse/jdt/launching/sourcelookup/advanced/AdvancedSourceLookup.java b/org.eclipse.jdt.launching/launching/org/eclipse/jdt/launching/sourcelookup/advanced/AdvancedSourceLookup.java
index 77e721c..eefa06c 100644
--- a/org.eclipse.jdt.launching/launching/org/eclipse/jdt/launching/sourcelookup/advanced/AdvancedSourceLookup.java
+++ b/org.eclipse.jdt.launching/launching/org/eclipse/jdt/launching/sourcelookup/advanced/AdvancedSourceLookup.java
@@ -60,13 +60,21 @@
 		final Map<File, IPackageFragmentRoot> classpath = new LinkedHashMap<>();
 		for (IPackageFragmentRoot fragment : project.getPackageFragmentRoots()) {
 			if (fragment.getKind() == IPackageFragmentRoot.K_BINARY) {
-				File classpathLocation;
+				File classpathLocation = null;
 				if (fragment.isExternal()) {
 					classpathLocation = fragment.getPath().toFile();
 				} else {
-					classpathLocation = fragment.getResource().getLocation().toFile();
+					IResource resource = fragment.getResource();
+					if (resource != null) {
+						IPath location = resource.getLocation();
+						if (location != null) {
+							classpathLocation = location.toFile();
+						}
+					}
 				}
-				classpath.put(classpathLocation, fragment);
+				if (classpathLocation != null) {
+					classpath.put(classpathLocation, fragment);
+				}
 			}
 		}
 		return classpath;
diff --git a/org.eclipse.jdt.launching/pom.xml b/org.eclipse.jdt.launching/pom.xml
index 50b420b..b98ef87 100644
--- a/org.eclipse.jdt.launching/pom.xml
+++ b/org.eclipse.jdt.launching/pom.xml
@@ -18,7 +18,7 @@
   </parent>
   <groupId>org.eclipse.jdt</groupId>
   <artifactId>org.eclipse.jdt.launching</artifactId>
-  <version>3.12.0-SNAPSHOT</version>
+  <version>3.12.100-SNAPSHOT</version>
   <packaging>eclipse-plugin</packaging>
   
   <build>