JDT为这些不同的构建路径提供

来源:互联网 发布:恶意软件图片 编辑:程序博客网 时间:2024/06/06 02:10

每种不同的构建路径都有不同的作用:源文件夹是把源码进行构建的途径,二进制库是导入少量jar包的方式,依赖项目是供多项目分模块开发使用的,使用类路径变量可以避免二进制包的路径依赖,而类路径容器则为大量二进制库的引入提供了方便。

  JDT为这些不同的构建路径提供了一个统一的接口:IClassPathEntry,只要调用IJavaProject的setRawClasspath方法就可以为项目设定构建路径。

  可以看到setRawClasspath方法需要一个IClasspathEntry数组,数组中的元素就是要设置的每一个构建路径。前面提到的JavaCore类提供了一系列的静态方法来帮助我们生成不同的IClasspathEntry,而无须关注生成的细节。下面来看不同构建路径的添加方式。

  ① 源文件夹。使用JavaCore.newSourceEntry方法。下面的代码的作用是构造项目MyProject的源文件夹src的类路径条目:

  JavaCore.newSourceEntry(new Path("/MyProject/src"));

  ② 二进制库IClasspathEntry。使用JavaCore.newLibraryEntry 方法。下面的代码就是构造MyProject的类文件lib的类路径条目:

  Path("/MyProject/lib"),null, null,false);

  以下类路径条目具有源代码连接:

  设定关联源代码包有利于代码的跟踪调试。

  ③ 依赖项目。使用JavaCore.newProjectEntry方法。下面的代码就是构造依赖项目MyFramework:

  IClassPathEntry prjEntry = JavaCore.newProjectEntry(new

  Path("/MyFramework"), true);

  ④ 类路径变量。使用JavaCore.newVariableEntry方法。类路径变量对于整个工作空间来说是全局的,并且可以通过 JavaCore 方法 getClasspathVariable 和 setClasspathVariable 来处理。

  可能会注册自动的类路径变量初始化方法,当启动工作空间时,通过扩展点 org.eclipse. jdt.core.classpathVariableInitializer来调用该类路径变量初始化方法。

  以下类路径条目指示一个库,该库的位置存放在变量HOME中。使用变量SRC_HOME和SRC_ROOT来定义源代码连接:

  IClassPathEntry varEntry = JavaCore.newVariableEntry(

  new Path("HOME/foo.jar"), //库路径

  new Path("SRC_HOME/foo_src.zip"), //源码归档路径

  new Path("SRC_ROOT"), //源码归档根路径

  true);

  JavaCore.setClasspathVariable("HOME", new Path("d:/myInstall"), null);

  ⑤ 类路径容器。通过 JavaCore的getClasspathContainer和setClasspathContainer两个方法来处理类路径容器。

  可能会注册一个自动的类路径容器初始化方法,当需要绑定容器时,通过扩展点 org.eclipse.jdt.core.classpathContainerInitializer来被动地调用类路径容器初始化方法。

  以下类路径条目指示系统类库容器:

  IClassPathEntry varEntry = JavaCore.newContainerEntry( new Path("JDKLIB/default"),false); JavaCore.setClasspathContainer( new Path("JDKLIB/default"), new IJavaProject[]{ myProject }, new IClasspathContainer[] { new IClasspathContainer() { public IClasspathEntry[] getClasspathEntries() { return new IClasspathEntry[]{ JavaCore.newLibraryEntry( new Path("d:/rt.jar"), null, null, false); }; } public String getDescription() { return "Basic JDK library container"; } public int getKind() { return IClasspathContainer.K_SYSTEM; } public IPath getPath() { return new Path("JDKLIB/basic"); } } }, null);

  我们只要调用相应的方法创建我们的类路径条目就可以了,然后把这些条目组成的数组通过setRawClasspath方法设定到项目中。需要注意的是如果我们只把要添加的类路径条目传入 setRawClasspath方法的话,就会替换原有的项目构建路径,这常常是我们不希望的。可以调用IJavaProject的 readRawClasspath方法读取项目已有的设置,把我们要设置的构建路径添加到它的后面,然后再调用setRawClasspath方法设定新的项目构建路径。

0 0
原创粉丝点击