问题描述
java 在 打包,利用 java -Xmx1g -Djava.ext.dirs=lib2 Runner xx运行。
报错:RSA premaster secret error
测试没有问题,本地可以运行且结果正确; 服务器可以运行,但结果不正确,报上述错误。
问题分析
java -cp xx.jar yy 可以运行。
java -Djava.ext.dirs则不可以运行。
应该是环境问题,涉及问题:java -Djava.ext.dirs 加载Lib后,%JAVA_HOME%\jre\lib\ext 下面的jar包就不会加载啦。
经过查询,涉及sunjce_provider.jar。
解决方法1
找到sunjce,拷贝到lib里,然后运行解决。
echo $JAVA_HOME
> find $JAVA_HOME -iname "*sunjce*jar" # find sunjce
/usr/lib/jvm/java-7-openjdk-amd64/jre/lib/ext/sunjce_provider.jar
把这个拷贝到lib里即可。
解决方法2
其实就是要加载 ext下面的jar包才行,否则容易出问题。
例如:java -Djava.ext.dirs=lib:$JAVA_HOME/jre/lib/ext -jar build/MyAppJar.jar
总结
- cp利用当前jar包和jre里的lib/ext目录的jar包,-D不会。
- 如果需要则拷贝过去jar
引用参考
https://stackoverflow.com/questions/21390157/rsa-premaster-secret-error