[125721] NPE during publish of external jars
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/AbstractModuleAssembler.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/AbstractModuleAssembler.java
index 6c72803..89e2075 100644
--- a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/AbstractModuleAssembler.java
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/AbstractModuleAssembler.java
@@ -9,6 +9,7 @@
  **************************************************************************************************/
 package org.eclipse.jst.server.generic.core.internal.publishers;
 			
+import java.io.File;
 import java.io.IOException;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.runtime.CoreException;
@@ -106,7 +107,7 @@
 		
 		return module.getName()+".jar";
 	}
-	
+
 	private void doPackModule(IModuleResource resource, ModulePackager packager) throws CoreException, IOException{
 			if (resource instanceof IModuleFolder) {
 				IModuleFolder mFolder = (IModuleFolder)resource;
@@ -118,12 +119,17 @@
 					doPackModule(resources[i], packager);
 				}
 			} else {
-				IFile file = (IFile) resource.getAdapter(IFile.class);
 				String destination = resource.getModuleRelativePath().append(resource.getName()).toPortableString();
-				packager.write(file, destination);
+				IFile file = (IFile) resource.getAdapter(IFile.class);
+				if (file != null)
+					packager.write(file, destination);
+				else {
+					File file2 = (File) resource.getAdapter(File.class);
+					packager.write(file2, destination);
+				}
 			}
 	}
-	
+
 	protected IPath copyModule(IModule module,IProgressMonitor monitor)throws CoreException{
 		ProjectModule pm =(ProjectModule)module.loadAdapter(ProjectModule.class, monitor);
 		IPath to = getProjectWorkingLocation().append(pm.getId());
diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/AntPublisher.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/AntPublisher.java
index 2777d14..5d7cb89 100644
--- a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/AntPublisher.java
+++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/publishers/AntPublisher.java
@@ -46,7 +46,6 @@
 import org.eclipse.wst.server.core.IModule;
 import org.eclipse.wst.server.core.IModuleArtifact;
 import org.eclipse.wst.server.core.internal.ServerPlugin;
-import org.eclipse.wst.server.core.model.ServerBehaviourDelegate;
 import org.osgi.framework.Bundle;
 /**
  * Ant based publisher.
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 bf1842d..9dbfd03 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
@@ -11,6 +11,7 @@
 
 import java.io.ByteArrayOutputStream;
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
@@ -112,6 +113,27 @@
 		}
 	}
 
+	/**
+	 * Write the passed resource to the current archive
+	 * 
+	 * @param resource
+	 *            java.io.IFile
+	 * @param destinationPath
+	 *            java.lang.String
+	 * @exception java.io.IOException
+	 * @exception org.eclipse.core.runtime.CoreException
+	 */
+	public void write(File resource, String destinationPath) throws IOException, CoreException {
+		InputStream contentStream = null;
+		try {
+			contentStream = new FileInputStream(resource);
+			write(contentStream, destinationPath);
+		} finally {
+			if (contentStream != null)
+				contentStream.close();
+		}
+	}
+
 	public void write(InputStream contentStream, String destinationPath) throws IOException, CoreException {
 		ByteArrayOutputStream output = null;