java编译中sourcepath和classpath之我见

最近做了一个web项目,流程大概是先从数据库获取数据,先生成java文件,然后把java文件编译成class文件,因为生成的class文件中会引用lib中的jar包,也会引用刚生成的class文件,所以这个时候就需要用到sourcepath和classpath这两个路径变量

首先要明白sourcepath和classpath的作用,加载classpath一般会指web项目中lib中的jar包,加载sourcepath一般是指package下面的class文件,所以在我这个web工程中生成class文件时指定sourcepath和classpath是必须的。

然后就要指定你的java编译器在编译时需要用到这两个变量的具体路径,做法如下:

 1,因为lib下面有很多jar包,而你如果也要依赖很多jar包,就需要遍历lib下面的jar包,把每一个都指定到classpath下面,

StringBuffer sbb = new StringBuffer();
File files = new File(opt);
String[] filess = files.list();
//遍历要导入引入的包
for (int i = 0; i < filess.length; i++) {
sbb.append(opt+filess[i]+";");
}

2,指定sourcepath路径,然后把sourcepath和classpath一起放到Iterable集合中

  Iterable<String> options = Arrays.asList("-sourcepath", sourcepath,"-classpath", sbb.toString());

3,然后把options放到编译中

CompilationTask task = compiler.getTask(null, fileManager, null, options, null, obj);

其中要注意的是,如果你是window下运行项目,classpath变量中jar包之间是";"分号来隔开,如果要布置到liunx系统,就要写":"分号,否则classpath中只能识别第一个jar包,其他jar包识别不了,会报找不到jar包。



猜你喜欢

转载自blog.csdn.net/wangdonghello/article/details/38225805