classpath 和 java.ext.dirs 的区别

先说说我的遭遇:
以下是我到运行脚本

java -cp lib -Djava.ext.dirs=lib com.test.Test

之前一直运行正常,突然一天报如下错(但本地在eclipse里面运行始终正常)
[i]
java.io.IOException: javax.net.ssl.SSLKeyException: RSA premaster secret error
java.io.IOException: java.io.IOException: javax.net.ssl.SSLKeyException: RSA premaster secret error
[/i]
开始怀疑是jdk问题,重装jdk还是不行。
因为用到httpclient,以为是版本问题,所以修改httpclient为4.0版本,并设置为信任任何网站,还是提示错误,大致是没有访问权限的意思。

无耐之下,开始研究服务器跟本地的区别(因为只有在服务器上才出错,本地是可以的)。jdk比较过了,一样的版本。没道理啊,下载服务器代码本地部署一份(因为本地用ubuntu,所以部署跟服务器一模一样),问题来了,线上到代码在本地也不行了。奇怪。。。。。继续缩小排查范围。比较跟之前在本地能正常运行的程序(因为代码一样,只有部署有稍微差别)。
抱着试一试到态度修改来以下代码:

java -cp lib -Djava.ext.dirs=lib com.test.Test

修改后为:

java -cp lib/test.jar com.test.Test

竟然运行OK啦,奇怪?????算了,先保证能运行再说!
可是问题又来了,我的log4j.xml不能打包到jar里啊,这样修改不方便,怎么加入到运行参数呢???
search。。。。。in。。。。baidu。。。。。。
得到解决方案:

-Dlog4j.configuration=file:/lib/log4j.xml

在修改后的代码追加以上代码,日志打印OK。

研究至此已经解决了本次遇到到问题。但是一想,如果我有多个jar呢?
经过尝试“classpth”是不支持通配符“*”的,所以目前能想到的唯一办法是一个一个追加到后面。

如果有多个配置文件呢?
......

算了,想想都可怕,原来失去”Djava.ext.dirs“这么可怕。。。。。。

抽时间还是算好好研究研究"-cp"和”-Djava.ext.dirs“的加载规则吧。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值