您的位置:首页 >> 编程开发 >> Java >> Java基础 >> Eclipse >> 正文
Eclipse RSS
 

Eclipse插件开发中使用URLClassLoader加载JavaProject中的类

http://www.rdxx.com 05年01月23日 12:12 Blog 我要投稿

关键词: 加载 , 插件 , URL , Project , Java , Eclipse , ClassLoader , , 开发 , IP , loader , Class

昨天在开发一个给Java Class添加static final long serialVersionUID属性的Eclipse插件时需要用到获取选中的Java类型(IType)对应的Class,由于是第一次写插件,花了不少时间来看帮助和相关资料才解决这个问题,最后总结了一下,写了一个ClassHelper类,方便以后再写其他插件时可以使用。

ClassHelper.java


package ksource.eclipse.util;

import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.HashMap;
import java.util.Map;

import org.eclipse.core.runtime.CoreException;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.JavaModelException;
import org.eclipse.jdt.launching.JavaRuntime;

/**
 * Class Helper to load class of java project.
 * @author <a href=mailto:elvis_qy@yahoo.com.cn>elvis</a>
 */
public final class ClassHelper {

    private static final String PROTOCAL_PREFIX = "file:///";

    /**
     * get the <code>ClassLoader</code> of java project specified.
     *
     * @param project <code>IJavaProject</code>
     * @return <code>ClassLoader</code> of java project
     * @throws CoreException
     * @throws MalformedURLException
     */
    public static ClassLoader getProjectClassLoader(IJavaProject project)
            throws CoreException,MalformedURLException {

        //compute the project classpaths
        //REVIEW: Are the classpaths returned by computeDefaultRuntimeClassPath enough to load class?
        String[] classPaths = JavaRuntime.computeDefaultRuntimeClassPath(project);

        URL[] urls = new URL[classPaths.length];
        for (int i = 0; i < classPaths.length; i++) {
                urls[i] = new URL(PROTOCAL_PREFIX
                        + computeForURLClassLoader(classPaths[i]));
        }
        return new URLClassLoader(urls);
    }

    /**
     * load <code>Class</code> in java project
     *
     * @param project <code>IJavaProject</code>
     * @param className name of class to load
     * @return <code>Class</code>
     * @throws ClassNotFoundException
     * @throws CoreException
     * @throws MalformedURLException

9 7 3 1 2 3 4 8 :


 
 
标签: 加载 , 插件 , URL , Project , Java , Eclipse , ClassLoader , , 开发 , IP , loader , Class 打印本文
 
 
  热点搜索
 
 
 



Valid XHTML 1.0 Transitional
Copyright ©2005 - 2008 Rdxx.Com,All Rights Reserved
收藏本页
收藏本站