*** empty log message ***
diff --git a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaProject.java b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaProject.java
index 0818f30..8513866 100644
--- a/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaProject.java
+++ b/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/JavaProject.java
@@ -639,7 +639,7 @@
 	public IPackageFragment findPackageFragment(IPath path)
 		throws JavaModelException {
 
-		return findPackageFragment0(this.canonicalizedPath(path));
+		return findPackageFragment0(JavaProject.canonicalizedPath(path));
 	}
 
 	/**
@@ -657,7 +657,7 @@
 	public IPackageFragmentRoot findPackageFragmentRoot(IPath path)
 		throws JavaModelException {
 
-		return findPackageFragmentRoot0(this.canonicalizedPath(path));
+		return findPackageFragmentRoot0(JavaProject.canonicalizedPath(path));
 	}
 
 	/**
@@ -1090,7 +1090,7 @@
 	 */
 	public IPackageFragmentRoot getPackageFragmentRoot(String jarPath) {
 
-		return getPackageFragmentRoot0(this.canonicalizedPath(new Path(jarPath)).toString());
+		return getPackageFragmentRoot0(JavaProject.canonicalizedPath(new Path(jarPath)).toString());
 	}
 	
 	/**
@@ -1386,6 +1386,16 @@
 									false,
 									false);
 						}
+						// if container is exported, then its nested entries must in turn be exported  (21749)
+						if (rawEntry.isExported()){
+							containerRawEntry = new ClasspathEntry(
+								containerRawEntry.getContentKind(),
+								containerRawEntry.getEntryKind(), 
+								containerRawEntry.getPath(),
+								containerRawEntry.getSourceAttachmentPath(),
+								containerRawEntry.getSourceAttachmentRootPath(),
+								true); // duplicate container entry for tagging it as exported
+						}
 						resolvedEntries.add(containerRawEntry);
 					}
 					break;