问题一:
我在shell脚本中用:
nohup java -Djava.ext.dirs=${DIR}/ -jar ${DIR}/${JAR_NAME} > ${DIR}/nohup.out &
启项目,请求https
报了以下错误:
Caused by: javax.net.ssl.SSLKeyException: RSA premaster secret error
问题二:
为解决问题一,将:
jre目录下的/lib/ext/sunjce_provider.jar
加到自己的jar
包同级目录后
启动报以下错误:
Caused by: java.lang.NoSuchMethodError: sun.security.internal.spec.TlsMasterSecretParameterSpec.getExtendedMasterSecretSessionHash()
并且程序直接退出。
最后:
改启动脚本如下:
nohup java -Djava.ext.dirs=${DIR}/:${JRE_DIR}/lib/:${JRE_DIR}/lib/ext/ -jar ${DIR}/${JAR_NAME} > ${DIR}/nohup.out &
问题全部解决了
总结原因:
1.由于我打包方式的问题,导致配置文件没有加载到classpath
目录下,为了解决配置文件加载问题我用了java -Djava.ext.dirs=${DIR}/ -jar ${DIR}/${JAR_NAME}
,但是这样一来java
自带的一些加密解密的jar包
,就不会自动加进来了,详情可以百度。
2.-Djava.ext.dirs=${DIR}/:${JRE_DIR}/lib/:${JRE_DIR}/lib/ext/
中:
${DIR}/
是jar所在目录,
${JRE_DIR}/lib/:${JRE_DIR}/lib/ext/
引得就是eclipse
中JRE System Library
的jar
如图:
如上图,这些jar全部来自jre目录下的 /lib/和/lib/ext/目录
,只要将这两个目录的路径配到-Djava.ext.dirs
参数中就能解决问题