问题描述:
运行Java程序连接到SQL Server数据库的时候,抛出了含【RSA premaster secret error】的错误信息。
问题原因:
网上有些人感觉是JDK版本不一致的原因,说重装了JDK就好了,其实原因不在于此。错误原因应该是没有提供有效的加密算法实现类。而JDK中,算法实现类都存放在lib/ext/sunjce_provider.jar包中,也就是说在运行的时候,classpath中找不到这个包。
默认安装的情况下,JDK的系统属性是指向了该包的目录的,即【-Djava.ext.dirs=%JAVA_HOME%/jre/lib/ext】,可能处于默写原因,这个配置被改写了。也就找不到了该包,异常也就因此而生。
解决方法:
在classpath中加入该包,例如: java -classpath .\lib;%JAVA_HOME%\jre\lib\ext\sunjce_provider.jar xxx.MainClass
参考: