[206641] WAR source files imported incorrectly
diff --git a/plugins/org.eclipse.jst.j2ee.core/archive/org/eclipse/jst/jee/archive/AbstractArchiveSaveAdapter.java b/plugins/org.eclipse.jst.j2ee.core/archive/org/eclipse/jst/jee/archive/AbstractArchiveSaveAdapter.java
index d6dcf64..539d838 100644
--- a/plugins/org.eclipse.jst.j2ee.core/archive/org/eclipse/jst/jee/archive/AbstractArchiveSaveAdapter.java
+++ b/plugins/org.eclipse.jst.j2ee.core/archive/org/eclipse/jst/jee/archive/AbstractArchiveSaveAdapter.java
@@ -36,7 +36,8 @@
 		Exception caughtException = null;
 		try {
 			monitor.beginTask("Saving resources", TOTAL_TICKS);
-			List<IArchiveResource> files = getArchive().getArchiveResources();
+			
+			List<IArchiveResource> files = getArchiveResourcesForSave();
 			monitor.worked(GATHER_RESOURCES_TICKS);
 			IProgressMonitor saveSubMonitor = new SubProgressMonitor(monitor, SAVE_RESOURCES_TICKS);
 			int SUB_SAVE_TICKS = 10;
@@ -68,6 +69,11 @@
 		}
 	}
 
+	protected List<IArchiveResource> getArchiveResourcesForSave() {
+		List<IArchiveResource> files = getArchive().getArchiveResources();
+		return files;
+	}
+
 	/**
 	 * Subclasses should implement to perform the actual save on the specified
 	 * {@link IArchiveResource}.
diff --git a/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/WebComponentArchiveSaveAdapter.java b/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/WebComponentArchiveSaveAdapter.java
index 682c7e6..c1531f5 100644
--- a/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/WebComponentArchiveSaveAdapter.java
+++ b/plugins/org.eclipse.jst.j2ee/archiveops/org/eclipse/jst/j2ee/internal/archive/WebComponentArchiveSaveAdapter.java
@@ -11,7 +11,9 @@
 package org.eclipse.jst.j2ee.internal.archive;
 
 import java.io.FileNotFoundException;
+import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Map;
 
 import org.eclipse.core.resources.IFile;
@@ -112,4 +114,19 @@
 		
 		return true;
 	}
+	
+	@Override
+	protected List<IArchiveResource> getArchiveResourcesForSave() {
+		List <IArchiveResource> sortedFiles = new ArrayList <IArchiveResource>();
+		int classIndex = 0;
+		for(IArchiveResource resource : super.getArchiveResourcesForSave()){
+			if(resource.getPath().lastSegment().endsWith(DOT_CLASS)){
+				sortedFiles.add(classIndex++, resource);
+			}
+			else {
+				sortedFiles.add(resource);
+			}
+		}
+		return sortedFiles;
+	}
 }