MSSQL 通过 JDBC 错误:java.lang.UnsupportedOperationException
Posted
技术标签:
【中文标题】MSSQL 通过 JDBC 错误:java.lang.UnsupportedOperationException【英文标题】:MSSQL via JDBC Error: java.lang.UnsupportedOperationException 【发布时间】:2014-01-22 11:47:22 【问题描述】:我正在尝试通过 Java 访问 MSSQL 数据库,并且刚刚编写了一个小型测试类来查看连接是否正常工作。我已通过 Maven 依赖项将 JDBC 驱动程序添加到构建路径中。
异常翻译: 此驱动程序不支持。使用类库提供'sqljdbc4.jar',支持JDBC 4.0
但是,在执行代码时会抛出 java.lang.UnsupportedOperationException。以下是完整的错误日志:
java.lang.UnsupportedOperationException: Die Java-Laufzeitumgebung (Java Runtime Environment, JRE), Version 1.7, wird von diesem Treiber nicht unterstützt. Verwenden Sie die Klassenbibliothek 'sqljdbc4.jar', die Unterstützung für JDBC 4.0 bietet.
at com.microsoft.sqlserver.jdbc.SQLServerConnection.<init>(SQLServerConnection.java:304)
at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1011)
at java.sql.DriverManager.getConnection(DriverManager.java:579)
at java.sql.DriverManager.getConnection(DriverManager.java:221)
at test.TestJDBC.dbTest.main(dbTest.java:28)
这是我的测试课:
package test.TestJDBC;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class dbTest
@SuppressWarnings( "nls" )
public static void main( final String args[] )
Connection connection = null;
try
// the sql server driver string
Class.forName( "com.microsoft.sqlserver.jdbc.SQLServerDriver" );
// the sql server url
String url = "jdbc:sqlserver://[dbserver]:1433;DatabaseName=[dbname]";
// get the sql server database connection
connection = DriverManager.getConnection( url, "XXX", "YYY" );
System.out.println( "Connected." );
// Create and execute an SQL statement that returns some data.
String SQL = "SELECT X, Y, Z FROM ABC";
Statement stmt = connection.createStatement();
ResultSet rs = stmt.executeQuery( SQL );
// Iterate through the data in the result set and display it.
while ( rs.next() )
System.out.println( rs.getString( 1 ) + " " + rs.getString( 2 ) );
catch ( Exception e )
System.out.println( "Es ist ein Fehler aufgetreten:" );
System.out.println( e.getMessage() );
e.printStackTrace();
System.exit( 0 );
如果有人能指出我所犯的错误,我将不胜感激,因为我似乎无法弄清楚。
【问题讨论】:
“我已通过 maven 依赖项将 JDBC 驱动程序添加到构建路径中。” ...那会是哪种依赖关系?提示:它告诉你你使用了错误的库版本。 感谢您的建议。我正在使用集成到 maven (...\com\microsoft\sqlserver\sqljdbc4\4.0) 中的第三方存储库。它指向 sqljdbc4.jar 文件。在 Eclipse 中打开它时,我还可以在其中看到正确的包 com.microsoft.sqlserver.jdbc 和 microsoft.sql。第一个正是我在 Class.forName 声明中引用的包,所以我看不出这里有什么问题:( 尝试在您的项目上执行mvn dependency:tree
。看起来错误的 sqljdbc.jar 登陆了类路径。也许它被包含在其他地方的短暂依赖中?如果是,那么您可以定义一个exclude
。
【参考方案1】:
谷歌翻译说例外是:
此驱动程序不支持 Java 运行时环境(Java Runtime Environment,JRE)版本 1.7。使用为 JDBC 4.0 提供支持的类库“sqljdbc4.jar”。
看来您需要通过此处的页面下载最新版本的 JDBC 驱动程序
Microsoft JDBC Driver for SQL Server
【讨论】:
抱歉,忘记为你们翻译了……我使用的 .jar 文件与消息提示的完全相同。这就是为什么我根本不明白这个信息。我也尝试使用 Java 1.6 来执行。相同的错误消息(在这种情况下只是说“版本 1.6”)。以上是关于MSSQL 通过 JDBC 错误:java.lang.UnsupportedOperationException的主要内容,如果未能解决你的问题,请参考以下文章
Maven Shade 插件 + MsSQL JDBC -> 即时 JNI 错误 - 无效的签名文件清单