diff --git a/ant/org.eclipse.ant.tests.ui/Ant Editor Tests/org/eclipse/ant/tests/ui/editor/AntEditorTests.java b/ant/org.eclipse.ant.tests.ui/Ant Editor Tests/org/eclipse/ant/tests/ui/editor/AntEditorTests.java
index b7a0f58..6f62dcd 100644
--- a/ant/org.eclipse.ant.tests.ui/Ant Editor Tests/org/eclipse/ant/tests/ui/editor/AntEditorTests.java
+++ b/ant/org.eclipse.ant.tests.ui/Ant Editor Tests/org/eclipse/ant/tests/ui/editor/AntEditorTests.java
@@ -312,6 +312,28 @@
 		assertNotNull("Should have a document", doc); //$NON-NLS-1$
 	}
 
+	public void testOpenImportViaClasspath() throws PartInitException {
+		IFile file = getIFile("importViaClasspath.xml"); //$NON-NLS-1$
+		AntEditor editor = (AntEditor) EditorTestHelper.openInEditor(file, "org.eclipse.ant.ui.internal.editor.AntEditor", true); //$NON-NLS-1$
+		IDocument doc = editor.getDocumentProvider().getDocument(editor.getEditorInput());
+		assertNotNull("Should have a document", doc); //$NON-NLS-1$
+
+		file = getIFile("BaseBaseBuild.xml"); //$NON-NLS-1$
+		editor = (AntEditor) EditorTestHelper.openInEditor(file, "org.eclipse.ant.ui.internal.editor.AntEditor", true); //$NON-NLS-1$
+		doc = editor.getDocumentProvider().getDocument(editor.getEditorInput());
+		assertNotNull("Should have a document", doc); //$NON-NLS-1$
+
+		file = getIFile("BaseBuild.xml"); //$NON-NLS-1$
+		editor = (AntEditor) EditorTestHelper.openInEditor(file, "org.eclipse.ant.ui.internal.editor.AntEditor", true); //$NON-NLS-1$
+		doc = editor.getDocumentProvider().getDocument(editor.getEditorInput());
+		assertNotNull("Should have a document", doc); //$NON-NLS-1$
+
+		file = getIFile("Base.xml"); //$NON-NLS-1$
+		editor = (AntEditor) EditorTestHelper.openInEditor(file, "org.eclipse.ant.ui.internal.editor.AntEditor", true); //$NON-NLS-1$
+		doc = editor.getDocumentProvider().getDocument(editor.getEditorInput());
+		assertNotNull("Should have a document", doc); //$NON-NLS-1$
+	}
+
 	/**
 	 * bug 195840 Import a XML file with BOM character in ant editor fails Runs on 1.5 vms or newer.
 	 */
diff --git a/ant/org.eclipse.ant.tests.ui/testbuildfiles/Base.xml b/ant/org.eclipse.ant.tests.ui/testbuildfiles/Base.xml
new file mode 100644
index 0000000..d48026e
--- /dev/null
+++ b/ant/org.eclipse.ant.tests.ui/testbuildfiles/Base.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<!--
+     Copyright (c) 2020 Michael Schnell and others.
+
+     This program and the accompanying materials
+     are made available under the terms of the Eclipse Public License 2.0
+     which accompanies this distribution, and is available at
+     https://www.eclipse.org/legal/epl-2.0/
+
+     SPDX-License-Identifier: EPL-2.0
+    
+     Contributors:
+         Michael Schnell - initial API and implementation
+ -->
+<project name="TOP" default="Middle.Base.DoBase">
+	<include>
+		<javaresource name="BaseBuild.xml" classpath="." />
+	</include>
+</project>
\ No newline at end of file
diff --git a/ant/org.eclipse.ant.tests.ui/testbuildfiles/BaseBaseBuild.xml b/ant/org.eclipse.ant.tests.ui/testbuildfiles/BaseBaseBuild.xml
new file mode 100644
index 0000000..15d5887
--- /dev/null
+++ b/ant/org.eclipse.ant.tests.ui/testbuildfiles/BaseBaseBuild.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0"?>
+<!--
+     Copyright (c) 2020 Michael Schnell and others.
+
+     This program and the accompanying materials
+     are made available under the terms of the Eclipse Public License 2.0
+     which accompanies this distribution, and is available at
+     https://www.eclipse.org/legal/epl-2.0/
+
+     SPDX-License-Identifier: EPL-2.0
+    
+     Contributors:
+         Michael Schnell - initial API and implementation
+ -->
+<project name="Base">
+	<target name="DoBase">
+		<echo message="Hello ANT" />
+	</target>
+</project>
\ No newline at end of file
diff --git a/ant/org.eclipse.ant.tests.ui/testbuildfiles/BaseBuild.xml b/ant/org.eclipse.ant.tests.ui/testbuildfiles/BaseBuild.xml
new file mode 100644
index 0000000..ead8228
--- /dev/null
+++ b/ant/org.eclipse.ant.tests.ui/testbuildfiles/BaseBuild.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0"?>
+<!--
+     Copyright (c) 2020 Michael Schnell and others.
+
+     This program and the accompanying materials
+     are made available under the terms of the Eclipse Public License 2.0
+     which accompanies this distribution, and is available at
+     https://www.eclipse.org/legal/epl-2.0/
+
+     SPDX-License-Identifier: EPL-2.0
+    
+     Contributors:
+         Michael Schnell - initial API and implementation
+ -->
+<project name="Middle">
+	<include>
+		<javaresource name="BaseBaseBuild.xml" classpath="." />
+	</include>
+
+	<target name="DoMore">
+		<echo message="Hello ANT" />
+	</target>
+</project>
\ No newline at end of file
diff --git a/ant/org.eclipse.ant.tests.ui/testbuildfiles/importViaClasspath.xml b/ant/org.eclipse.ant.tests.ui/testbuildfiles/importViaClasspath.xml
new file mode 100644
index 0000000..72c55f9
--- /dev/null
+++ b/ant/org.eclipse.ant.tests.ui/testbuildfiles/importViaClasspath.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!--
+     Copyright (c) 2020 Andrey Loskutov <loskutov@gmx.de> and others.
+
+     This program and the accompanying materials
+     are made available under the terms of the Eclipse Public License 2.0
+     which accompanies this distribution, and is available at
+     https://www.eclipse.org/legal/epl-2.0/
+
+     SPDX-License-Identifier: EPL-2.0
+    
+     Contributors:
+         Andrey Loskutov <loskutov@gmx.de> - initial API and implementation
+ -->
+
+<project name="importViaClasspath" default="import-default">
+	<import>
+		<javaresource name="toBeImported.xml" classpath="." />
+	</import>
+</project>
+
diff --git a/ant/org.eclipse.ant.ui/Ant Editor/org/eclipse/ant/internal/ui/editor/utils/ProjectHelper.java b/ant/org.eclipse.ant.ui/Ant Editor/org/eclipse/ant/internal/ui/editor/utils/ProjectHelper.java
index 4045ffe..d5143e9 100644
--- a/ant/org.eclipse.ant.ui/Ant Editor/org/eclipse/ant/internal/ui/editor/utils/ProjectHelper.java
+++ b/ant/org.eclipse.ant.ui/Ant Editor/org/eclipse/ant/internal/ui/editor/utils/ProjectHelper.java
@@ -278,6 +278,17 @@
 	}
 
 	/**
+	 * Gets the associated project name by the absolute build-file path
+	 *
+	 * @param buildFile
+	 *            The file
+	 * @return The project name
+	 */
+	public static String getProjectNameOfBuildFile(String absolutePath) {
+		return parsedProjectNames.get(absolutePath);
+	}
+
+	/**
 	 * Builds the hash-map's build-file key
 	 *
 	 * @param buildFile
@@ -345,8 +356,11 @@
 				String currentProjectName = context.getCurrentProjectName();
 				// just an additional check if the name is non-empty
 				if (this.isCurrentProjectNameValid(currentProjectName)) {
-					String buildFilePath = context.getBuildFile().getAbsolutePath();
-					storeParsedProjectName(buildFilePath, currentProjectName);
+					if (context.getBuildFile() != null) {
+						storeParsedProjectName(context.getBuildFile().getAbsolutePath(), currentProjectName);
+					} else if (context.getBuildFileURL() != null) {
+						storeParsedProjectName(new File(context.getBuildFileURL().getPath()).getAbsolutePath(), currentProjectName);
+					}
 				}
 			}
 			catch (SAXParseException e) {
diff --git a/ant/org.eclipse.ant.ui/Ant Tools Support/org/eclipse/ant/internal/ui/model/AntIncludeNode.java b/ant/org.eclipse.ant.ui/Ant Tools Support/org/eclipse/ant/internal/ui/model/AntIncludeNode.java
index 906d54c..dfda703 100644
--- a/ant/org.eclipse.ant.ui/Ant Tools Support/org/eclipse/ant/internal/ui/model/AntIncludeNode.java
+++ b/ant/org.eclipse.ant.ui/Ant Tools Support/org/eclipse/ant/internal/ui/model/AntIncludeNode.java
@@ -141,7 +141,10 @@
 		 * of any subsequent operation on the AntIncludeNode object.
 		 */
 		IFile projectSpecificBuildFile = this.handleCorrectBuildFile(importedFromNode);
-		return org.eclipse.ant.internal.ui.editor.utils.ProjectHelper.getProjectNameOfBuildFile(projectSpecificBuildFile);
+		if (projectSpecificBuildFile != null) {
+			return org.eclipse.ant.internal.ui.editor.utils.ProjectHelper.getProjectNameOfBuildFile(projectSpecificBuildFile);
+		}
+		return org.eclipse.ant.internal.ui.editor.utils.ProjectHelper.getProjectNameOfBuildFile(this.getFilePath());
 	}
 
 	/**
