可执行jar的classpath 设置

可执行jar 的执行命令为 java -jar  myjar.jar,

如果使用了 -jar 选项,那么环境变量 CLASSPATH 和在命令行中指定的所有类路径都被 JVM 所忽略。 如果myjar.jar 调用了其他的jar文件,有下面几种解决方案

 解决方案

 

Java定义了三种级别的class,分别为BootStrap class,Extend Class,User class.

 BootStrap class扩展方案

Java 命令行提供了如何扩展bootStrap 级别class的简单方法.

-Xbootclasspath:基本核心的Java class 搜索路径.不常用,否则要重新写所有Java 核心class

-Xbootclasspath/a: 后缀在核心class搜索路径后面.常用.

-Xbootclasspath/p:前缀在核心class搜索路径前面.不常用,避免引起不必要的冲突.

 

语法如下:

java –Xbootclasspath/a:/path/myclass/account.jar: -jar yourself.jar(Unix用:号隔开)

java –Xbootclasspath:/d:/myclass/account.jar; -jar yourself.jar(Window用;号隔开)

1128 .不知如何,没有测试通过

1128 下午:测试通过 java –Xbootclasspath/a:/d:/myclass/account.jar; -jar yourself.jar(Window用;号隔开)

 

extend class 扩展方案

Java exten class 存放在{Java_home}\jre\lib\ext 目录下.当调用Java时,对扩展class路径的搜索是自动的.总会搜索的.这样,解决的方案就很简单了,将所有要使用的第三方的jar包都复制到ext 目录下.

 

该方案测试通过,但是其扩展性较差,也不方便

User class扩展方案

当使用-jar执行可执行Jar包时,JVM将Jar包所在目录设置为codebase目录,所有的class搜索都在这个目录下开始.所以如果使用了其他第三方的jar包,一个比较可以接受的可配置方案,就是利用jar包的Manifest扩展机制.步骤如下

1.将需要的第三方的jar包,复制在同可执行jar所在的目录或某个子目录下.

比如:jar 包在 d:\crm\luncher.jar 那么你可以把所有jar包复制到d:\crm目录下或d:\crm\lib 子目录下.

2.修改Manifest 文件

在Manifest.mf文件里加入如下行

Class-Path:classes12.jar lib/class12.jar

 

测试通过,但是使用该方法时应注意, Manifest.mf文件必须以空行或回车结尾,否则最后一行可能回解析错误。

参见:http://java.sun.com/docs/books/tutorial/deployment/jar/downman.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值