——此文章摘自《自己动手写开发工具
基于Eclipse的工具开发》定价
¥
特价
¥
详细>>http://track
linktech
cn/?m_id=dangdang&a_id=A
&l=
&l_type
=
width=
height=
border=
nosave>
下面解释一下代码中的重点部分
() IClasspathEntry[] oldPaths = javaProjectreadRawClasspath();
读取项目原有的构建路径条目
() IClasspathEntry luceneLibEntry = JavaCorenewLibraryEntry(
projectgetFile(LIB + FILESEPARATOR + LUCENEJAR)getFullPath()
projectgetFile(LIB + FILESEPARATOR + LUCENESRCJAR)getFullPath()
null false);
这一句构建lucene的jar包
第个参数是二进制jar包的位置我们的二进制jar包的位置为项目路径下的lib/lucenesrcjar
第个参数是jar包对应的源码包的位置
第个参数为源码包的根路径因为有的源码jar包的源码根路径不是jar包的根路径比如simplejta的源码jar包的格式如图所示
http://developcsaicn/Java_Eclipse/images/jpg>
图 Jar包的结构
对于这种情况就要指定第个参数为srclucene的源码包的源码根路径就是jar包的根路径因此我们设置此参数为null
第个参数表示是否导出我们设置为false
() URL luceneLib = ActivatorgetDefault()getBundle()getEntry(RESOUCELIB + FILE SEPARATOR + LUCENEJAR);
我们把lucenejar lucenesrcjar放到我们插件的resoucelib目录下当用户单击【为项目添加lucene支持】的时候要把这两个文件复制到项目的lib目录下因此需要首先读取插件路径resoucelib目录下的这两个jar包
读取插件路径下的文件时我们使用插件Activator类提供的方法即可比如如下调用
ActivatorgetDefault()getBundle()getEntry(config/myxml);
就可以读取到插件根目录下的文件config/myxml返回类型是javanetURL
() copyURLToFile(luceneLib project LIB + FILESEPARATOR + LUCENEJAR);
ActivatorgetDefault()getBundle()getEntry读取到的文件位置是URL类型的我们需要把这个URL对应的文件复制到项目的lib下下面看一下copyURLToFile的主干代码
inStream = urlopenStream();
IFile file = projectgetFile(destFileName);
if (!fileexists())
{
filecreate(inStream true null);
}
URL类有一个openStream可以打开文件的输入流IFile也有一个接受输入流的create方法用来创建文件因此我们只需要把url的输入流输出给IFile的create方法即可
这里我们也可以由url得到其对应的磁盘上的路径也可以得到IFile对应的磁盘上的路径然后使用Java IO来进行文件复制操作但是这样做不仅代码数量变多了而且由于使用的不是Eclipse的资源管理API会带来无法自动刷新等问题因此建议尽量使用Eclipse提供的API来完成此功能
right>[http://developcsaicn/Java_Eclipse/htm>] [http://developcsaicn/Java_Eclipse/htm>] [http://developcsaicn/Java_Eclipse/htm>] []