diff --git a/launching/org.eclipse.rcptt.launching.ext/src/org/eclipse/rcptt/internal/launching/ext/Q7TargetPlatformInitializer.java b/launching/org.eclipse.rcptt.launching.ext/src/org/eclipse/rcptt/internal/launching/ext/Q7TargetPlatformInitializer.java
index 6e53409..3fccd9c 100644
--- a/launching/org.eclipse.rcptt.launching.ext/src/org/eclipse/rcptt/internal/launching/ext/Q7TargetPlatformInitializer.java
+++ b/launching/org.eclipse.rcptt.launching.ext/src/org/eclipse/rcptt/internal/launching/ext/Q7TargetPlatformInitializer.java
@@ -225,10 +225,10 @@
 	public static void logError(TargetPlatformHelper info) {
 		Q7ExtLaunchingPlugin.log(new MultiStatus(PLUGIN_ID, 0, new IStatus[]{info.getStatus()}, "Target platform initialization error", null));
 	}
-
+	
 	public static Q7Info getInfo(ITargetPlatformHelper target, Map<String, Version> versions) throws CoreException {
 		Map<String, Version> map = versions;
-		MultiStatus status = new MultiStatus(PLUGIN_ID, 0, "Invalid eclipse product location: " + target.getTargetPlatformProfilePath(), null);
+		MultiStatus status = new MultiStatus(PLUGIN_ID, 0, "Invalid eclipse target platform: " + target.toString(), null);
 		Version platform = map.get(AUTInformation.VERSION);
 		Version osgi = map.get(AUTInformation.OSGI);
 		if (platform == null)
diff --git a/launching/org.eclipse.rcptt.launching.ext/src/org/eclipse/rcptt/launching/internal/target/TargetPlatformHelper.java b/launching/org.eclipse.rcptt.launching.ext/src/org/eclipse/rcptt/launching/internal/target/TargetPlatformHelper.java
index a323e68..883c373 100644
--- a/launching/org.eclipse.rcptt.launching.ext/src/org/eclipse/rcptt/launching/internal/target/TargetPlatformHelper.java
+++ b/launching/org.eclipse.rcptt.launching.ext/src/org/eclipse/rcptt/launching/internal/target/TargetPlatformHelper.java
@@ -87,6 +87,7 @@
 import org.eclipse.rcptt.launching.injection.Entry;
 import org.eclipse.rcptt.launching.injection.InjectionConfiguration;
 import org.eclipse.rcptt.launching.injection.UpdateSite;
+import org.eclipse.rcptt.launching.internal.target.Q7Target.AutInstall;
 import org.eclipse.rcptt.launching.p2utils.P2Utils;
 import org.eclipse.rcptt.launching.target.ITargetPlatformHelper;
 import org.eclipse.rcptt.launching.target.TargetPlatformManager;
@@ -328,6 +329,9 @@
 
 	public String getTargetPlatformProfilePath() {
 		ProfileBundleContainer container = (ProfileBundleContainer) getInstanceContainer();
+		if (container == null) {
+			return "";
+		}
 		try {
 			return container.getLocation(true).toString();
 		} catch (CoreException e) {
@@ -1245,7 +1249,15 @@
 	}
 
 	ProfileBundleContainer getInstanceContainer() {
-		return getQ7Target().getInstall().container;
+		final Q7Target target = getQ7Target();
+		if (target == null) {
+			return null;
+		}
+		final AutInstall install = target.getInstall();
+		if (install == null) {
+			return null;
+		}
+		return install.container;
 	}
 
 	public void setBundleContainers(ITargetLocation[] containers) {
