RSA premaster secret error問題分析和解決

問題描述

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

總結

  1. cp利用當前jar包和jre裏的lib/ext目錄的jar包,-D不會。
  2. 如果需要則拷貝過去jar

引用參考

https://stackoverflow.com/questions/21390157/rsa-premaster-secret-error

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章