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包。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值