[148901] web modules inside ear packed in correct
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/ModulePackager.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/ModulePackager.java
index 07b8f77..b053568 100644
--- a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/ModulePackager.java
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/ModulePackager.java
@@ -15,9 +15,10 @@
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.jar.JarOutputStream;
 import java.util.zip.CRC32;
 import java.util.zip.ZipEntry;
-import java.util.zip.ZipOutputStream;
+
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.Path;
@@ -26,7 +27,7 @@
  * Packages resources to a .zip file
  */
 public class ModulePackager {
-	private ZipOutputStream outputStream;
+	private JarOutputStream outputStream;
 //	private StringBuffer manifestContents;
 
 	private boolean useCompression = true;
@@ -43,7 +44,7 @@
 		directoryPath = (Path) directoryPath.removeLastSegments(1);
 		File newZipFile = new File(directoryPath.toString());
 		newZipFile.mkdirs();
-		outputStream = new ZipOutputStream(new FileOutputStream(filename));
+		outputStream = new JarOutputStream(new FileOutputStream(filename)); 
 		useCompression = compress;
 	}
 
@@ -88,8 +89,8 @@
 	 * @throws IOException
 	 */
 	public void writeFolder(String destinationPath) throws IOException {
-		if (!destinationPath.endsWith("/")) //$NON-NLS-1$
-			destinationPath = destinationPath + '/';
+//		if (!destinationPath.endsWith(File.separator )) 
+//			destinationPath = destinationPath + File.separator;
 		ZipEntry newEntry = new ZipEntry(destinationPath);
 		outputStream.putNextEntry(newEntry);
 		outputStream.closeEntry();
@@ -173,27 +174,24 @@
 	 */
 	public void pack(File directory, String root) throws CoreException, IOException
 	{
-		File[] files = directory.listFiles();
-		for(int i=0; i<files.length;i++)
-		{
-			if(files[i].isDirectory())
-			{
-				String relativeFolder=makeRelative(files[i].getAbsolutePath(), root);
-				if(relativeFolder!=null){//should always be true
-					writeFolder(relativeFolder);
-				}
-				pack(files[i], root);
-			}
-			else{
-				String relativeFolder=makeRelative(files[i].getAbsolutePath(), root);
-				if(relativeFolder!=null){//should always be true
-					write(files[i],relativeFolder);
-				}
-			}
-		}
-		
-		
-	}
+        File[] files = directory.listFiles();
+        for( int i = 0; i < files.length; i++ )
+        {
+            if( files[i].isDirectory() )
+            {
+                pack( files[i], root );
+            } else
+            {
+                String relativeFolder = makeRelative( files[i]
+                        .getAbsolutePath(), root );
+                if( relativeFolder != null )
+                {// should always be true
+                    write( files[i], relativeFolder );
+                }
+            }
+        }
+
+    }
 	/**
 	 * Make directoryname relative to root
 	 * @param fileName
@@ -207,8 +205,10 @@
 		{
 			folder=fileName.substring(root.length());
 		}
-		return folder;
-		
+        folder = folder.replaceAll("\\\\", "/");  //$NON-NLS-1$ //$NON-NLS-2$
+        if (folder.length() > 0 && folder.charAt(0) == '/')
+              folder = folder.substring(1);
+		return folder;		
 	}
 	
 }