import org.eclipse.jdt.ui.jarpackager.JarPackageData; //导入方法依赖的package包/类
/**
* Creates a JAR file containing the given resource (Java class with
* main()) and all associated resources
*
* @param resource the resource
* @return a file designing the created package
*/
public void run(IProgressMonitor monitor) {
log.fine("Build jar");
JarPackageData jarrer = new JarPackageData();
jarrer.setExportJavaFiles(true);
jarrer.setExportClassFiles(true);
jarrer.setExportOutputFolders(true);
jarrer.setOverwrite(true);
try {
// IJavaProject project =
// (IJavaProject) resource.getProject().getNature(JavaCore.NATURE_ID);
// check this is the case before letting this method get called
Object element = resource.getAdapter(IJavaElement.class);
IType type = ((ICompilationUnit) element).findPrimaryType();
jarrer.setManifestMainClass(type);
// Create a temporary JAR file name
File baseDir = Activator.getDefault().getStateLocation().toFile();
String prefix =
String.format("%s_%s-", resource.getProject().getName(), resource
.getName());
File jarFile = File.createTempFile(prefix, ".jar", baseDir);
jarrer.setJarLocation(new Path(jarFile.getAbsolutePath()));
jarrer.setElements(resource.getProject().members(IResource.FILE));
IJarExportRunnable runnable =
jarrer.createJarExportRunnable(Display.getDefault()
.getActiveShell());
runnable.run(monitor);
this.jarFile = jarFile;
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException(e);
}
}