一
ClassNotFoundException引发NoClassDefFoundError导致数据库连接失败:原因是找不到jre中的SSLSocket字节码,而SSLSocket存在于jsse.jar中,而jre中只有jsse.pack,这时需要将pack文件转成jar包:
可以用命令:unpack200 jsse.pack jsse.jar
ERROR [Druid-ConnectionPool-Create-1753593456] - create connection error
java.lang.NoClassDefFoundError: javax/net/ssl/SSLSocket
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1305)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012)
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1375)
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1431)
at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1888)
Caused by: java.lang.ClassNotFoundException: javax.net.ssl.SSLSocket
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1698)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1544)
... 7 more
二
java.io.UnsupportedEncodingException: Windows collation zh_CN is not supported by this driver.
此驱动程序不支持Windows排序规则zh_CN
java.io.UnsupportedEncodingException: Codepage MS936 is not supported by the Java environment.
Java环境不支持代码页MS936
原因同上,不过是jre中的charsets是pack文件,需要转成jar包;
运行 unpack200 charsets.pack charsets.jar
ERROR [Druid-ConnectionPool-Create-271186235] - create connection error, url: jdbc:sqlserver://10.169.1.21:1433;DatabaseName=appdbtest
com.microsoft.sqlserver.jdbc.SQLServerException: Windows collation zh_CN is not supported by this driver. ClientConnectionId:018f31b8-24f6-474b-a093-39d1a4aba5fe
at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:1667)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.processEnvChange(SQLServerConnection.java:2315)
at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEnvChange(tdsparser.java:170)
at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:64)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:2908)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:2234)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:41)
at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:2220)
at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:5696)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:1715)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1326)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012)
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1375)
at com.alibaba.druid.pool.DruidAbstractDataSource.createPhysicalConnection(DruidAbstractDataSource.java:1431)
at com.alibaba.druid.pool.DruidDataSource$CreateConnectionThread.run(DruidDataSource.java:1888)
Caused by: java.io.UnsupportedEncodingException: Windows collation zh_CN is not supported by this driver.
at com.microsoft.sqlserver.jdbc.SQLCollation.encodingFromLCID(SQLCollation.java:329)
at com.microsoft.sqlserver.jdbc.SQLCollation.<init>(SQLCollation.java:53)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.processEnvChange(SQLServerConnection.java:2311)
... 15 more
Caused by: java.io.UnsupportedEncodingException: Codepage MS936 is not supported by the Java environment.
at com.microsoft.sqlserver.jdbc.Encoding.checkSupported(SQLCollation.java:578)
at com.microsoft.sqlserver.jdbc.SQLCollation$WindowsLocale.getEncoding(SQLCollation.java:302)
at com.microsoft.sqlserver.jdbc.SQLCollation.encodingFromLCID(SQLCollation.java:323)
... 17 more
还有jdk安装不成功也可能是同样的原因.