ClassNotFoundException引发NoClassDefFoundError;Codepage MS936 is not supported by the Java environment

本文详细解析了在使用Druid连接池时遇到的SQLServer连接问题,包括ClassNotFoundException和UnsupportedEncodingException错误,提供了转换jsse.pack和charsets.pack为jar包的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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安装不成功也可能是同样的原因.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值