论坛首页 入门技术论坛

将jar包添加到lib中,并添加到classpath

浏览 5606 次
该帖已经被评为新手帖
作者 正文
   发表时间:2007-12-15   最后修改:2009-11-22
在插件制作中,我们经常需要将一些第二方jar包添加到lib中,并加到类路径中去。(其他文件移动也可参考)
工具类:
import java.io.IOException;
import java.io.InputStream;
import java.util.List;

import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IProjectDescription;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.eclipse.wst.common.componentcore.ComponentCore;
import org.eclipse.wst.common.componentcore.resources.IVirtualComponent;
import org.eclipse.wst.common.componentcore.resources.IVirtualFolder;
import org.osgi.framework.Bundle;

import com.cvicse.inforsuite.studio.core.Activator;

/**
 * StudioCoreUtil工具类.
 * 
 * @author huang_wei
 * 
 */
public class StudioCoreUtil {
        /**
	 * 返回Project应用目录指定目录的位置.
	 * 
	 * @param pj
	 *            project应用项目
	 * @param folder
	 *            目录名称
	 * @return 目录的位置
	 */

	public static IFolder getWebDir(final IProject pj, String folder) {
		final IVirtualComponent vc = ComponentCore.createComponent(pj);
		final IVirtualFolder vf = vc.getRootFolder().getFolder(folder);
		return (IFolder) vf.getUnderlyingFolder();
	}

	/**
	 * 复制资源到工作空间指定的路径中.
	 * 
	 * @param src
	 *            插件中资源的路径
	 * @param dest
	 *            工作空间中指定路径
	 */

	public static void copyFromPlugin(final IPath src, final IFile dest)
		throws CoreException{
		
		try {
			final Bundle bundle = Activator.getDefault().getBundle();
			final InputStream in = FileLocator.openStream(bundle, src, false);
			if(!dest.exists()){
				dest.create(in, true, null);
			}			
		} catch (IOException e) {
			throw new CoreException(Activator.createErrorStatus(e.getMessage(),
					e));
		}
	}

	/**
	 * 将list中的jar包复制到WEB-INF/lib下
	 * 
	 * @param pj
	 *            Studio Web应用项目
	 * @param list
	 *            包含jar包的list 
         * @param folderName
	 *            目录名称
	 */
	public static void addJarToLib(final IProject pj,IProgressMonitor monitor,
				final List<String> list,final String folderName){
		final IFolder webInfLib = StudioCoreUtil.getWebDir(pj, "WEB-INF/lib");
		
		try{
			//复制jar包
			for(String jar : list){
				StudioCoreUtil.copyFromPlugin(new Path(folderName+jar),
	                    webInfLib.getFile(jar));
				monitor.worked(1);
			}
		}catch(CoreException e){
			Activator.log(e);
		}	
	}
		
}

   发表时间:2008-11-17  
直接用ANT写不是更简单?
0 请登录后投票
   发表时间:2008-11-27  
用Ant? 高招! 
我考虑下在如何使用ant来移动该“文件”,如您有该经验,请不惜赐教
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics