[314575] Add manifest entry page of module project should not list files in lib dir of its EAR
diff --git a/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/internal/modulecore/util/JEEManifestDiscerner.java b/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/internal/modulecore/util/JEEManifestDiscerner.java
index e506def..652b99f 100644
--- a/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/internal/modulecore/util/JEEManifestDiscerner.java
+++ b/plugins/org.eclipse.jst.j2ee/earproject/org/eclipse/jst/j2ee/internal/modulecore/util/JEEManifestDiscerner.java
@@ -21,7 +21,12 @@
 import org.eclipse.jst.common.internal.modulecore.util.ArchiveManifest;
 import org.eclipse.jst.common.internal.modulecore.util.IJavaComponentDiscerner;
 import org.eclipse.jst.common.internal.modulecore.util.ManifestUtilities;
+import org.eclipse.jst.j2ee.internal.J2EEConstants;
+import org.eclipse.jst.j2ee.model.IEARModelProvider;
+import org.eclipse.jst.j2ee.model.ModelProviderManager;
 import org.eclipse.jst.j2ee.project.EarUtilities;
+import org.eclipse.jst.j2ee.project.JavaEEProjectUtilities;
+import org.eclipse.jst.javaee.application.Application;
 import org.eclipse.wst.common.componentcore.ComponentCore;
 import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
 import org.eclipse.wst.common.componentcore.resources.IVirtualFile;
@@ -64,7 +69,7 @@
 	protected ArrayList<IVirtualReference> findAllPossibleEntries(IProject parentProject, IProject childProject) {
 		IVirtualComponent ear = ComponentCore.createComponent(parentProject);
 		IVirtualReference[] hardRefs = ear.getReferences();
-		IVirtualReference[] actual_tmp = trimEarHardRefs(childProject, hardRefs);
+		IVirtualReference[] actual_tmp = trimEarHardRefs(ear, childProject, hardRefs);
 		IVirtualReference[] actual_clean = cleanHardRefs(actual_tmp);
 		ArrayList<IVirtualReference> refs = new ArrayList<IVirtualReference>();
 		refs.addAll(Arrays.asList(actual_clean));
@@ -77,7 +82,16 @@
 	 * @param hardRefs
 	 * @return
 	 */
-	private IVirtualReference[] trimEarHardRefs(IProject childProject, IVirtualReference[] hardRefs) {
+	private IVirtualReference[] trimEarHardRefs(IVirtualComponent ear, IProject childProject, IVirtualReference[] hardRefs) {
+		String earLibDir = null;
+		if(JavaEEProjectUtilities.isJEEComponent(ear)) {
+			final IEARModelProvider earModel = (IEARModelProvider)ModelProviderManager.getModelProvider(ear.getProject());
+			Application app = (Application)earModel.getModelObject();
+			earLibDir = app.getLibraryDirectory();
+			if(earLibDir == null) {
+				earLibDir = J2EEConstants.EAR_DEFAULT_LIB_DIR;
+			}
+		}
 		ArrayList<IVirtualReference> refs = new ArrayList<IVirtualReference>();
 		// We have to prune out self-references 
 		for( int i = 0; i < hardRefs.length; i++ ) {
@@ -86,7 +100,9 @@
 					|| hardRefs[i].getDependencyType() == IVirtualReference.DEPENDENCY_TYPE_CONSUMES
 					|| !hardRefs[i].getReferencedComponent().getProject().equals(childProject))
 					&& hardRefs[i].getArchiveName().endsWith("jar")) { //$NON-NLS-1$ // Only jar's are legal in MANIFEST
-				refs.add(hardRefs[i]);
+				if(earLibDir == null || !hardRefs[i].getRuntimePath().equals(new Path(earLibDir))) {// Jars in the EAR's library directory should not be added to the MANIFEST for EE5/EE6
+					refs.add(hardRefs[i]);
+				}
 			}
 		}
 		return refs.toArray(new IVirtualReference[refs.size()]);