com.mysql.jdbc.NonRegisteringDriver异常解决办法(续) 异常错误: at com.mysql.jdbc.Connection.(Connection.java:1531) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266) 原因分析: 1)未正确设置驱动的类路径(环境变量) 2)使用的mysql驱动程序有问题,版本太低,服务器数据库版本4.1,而驱动还是mysql-connector-java-3.1.14-bin.jar版本。 文献中提到 Connector/J 3.1 obsolete,说明此驱动已废弃的,已不用的,当然系统会出错了,正如参考文献,Connector/J 3.1 Older releases -- older releases (only recommended for special needs) 。 解决办法: 更换高版本驱动,并修改环境变量。 Connector/J 5.1 下载地址为:http://dev.mysql.com/downloads/ 另外:我在前文(com.mysql.jdbc.NonRegisteringDriver.connect异常解决办法 )也曾经介绍过这个问题,但是经过实际运行测试,上次依然没有彻底解决,这次续写本文予以纠正。 另外: 1)设置环境变量见: http://www.itale.cn/archives/2007/3/27_110.html 2)查看服务器数据库版本 mysql> s; Server version: 4.1.12 3)查看类路径 [root@linuxserver bin]# echo $CLASSPATH :/usr/java/jdk1.6.0/lib:/usr/local/lib/mysql-connector-java-5.0.6-bin.jar 原始错误日志: END NESTED EXCEPTION ** Last packet sent to the server was 6 ms ago. at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:2515) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2803) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:812) at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:3269) at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1182) at com.mysql.jdbc.Connection.createNewIO(Connection.java:2644) at com.mysql.jdbc.Connection.(Connection.java:1531) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266) at java.sql.DriverManager.getConnection(DriverManager.java:582) at java.sql.DriverManager.getConnection(DriverManager.java:207) at cn.com.talented.connection.MysqlConnection.getConnection(MysqlConnection.java:27) at com.wtszld.dao.PriceDAO.getRecordCount(PriceDAO.java:271) at org.apache.jsp.index_jsp._jspService(index_jsp.java:109) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:384) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266) at javax.servlet.http.HttpServlet.service ------------------------------- java.sql.SQLException MESSAGE: Communication link failure: java.io.EOFException, underlying cause: null ** BEGIN NESTED EXCEPTION ** java.io.EOFException STACKTRACE: java.io.EOFException at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1394) at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:1538) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1929) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1167) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1278) at com.mysql.jdbc.Connection.execSQL(Connection.java:2251) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1772) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1619) ** END NESTED EXCEPTION ** at com.mysql.jdbc.MysqlIO.reuseAndReadPacket(MysqlIO.java:1713) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1929) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1167) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:1278) at com.mysql.jdbc.Connection.execSQL(Connection.java:2251) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1772) at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1619) 参考: 1)http://dev.mysql.com/downloads/ 2)http://gyc567.javaeye.com/blog/137422 3)Connector/J 5.1 includes support for JDBC-4.0 functionality, including: Ease-of-development features including auto-registration with the DriverManager via the service provider mechanism, standardized Connection validity checks and categorized SQLExceptions based on recoverability/retry-ability and class of the underlying error. Unwrapping to interfaces that include vendor extensions Support for XML processing via JAXP interfaces to DOM, SAX and StAX Support for setting per-connection client information (which can be viewed in the comments section of a query via "SHOW PROCESSLIST" on a MySQL server, or can be extended to support custom persistence of the information via a public interface) Support for JDBC-4.0 NCHAR, NVARCHAR and NCLOB types