Я пытаюсь подключиться к SQL Server 2008
с помощью sqljdbc4.jar
и могу успешно подключиться с помощью Eclipse.
Но когда я экспортирую свой код как JAR и пытаюсь запустить его из командной строки, я получаю сообщение об ошибке:
verConnection.java:1323) в com.microsoft.sqlserver.jdbc.SQLServerConnection.login (SQLServerConne ction.java:991) в com.microsoft.sqlserver.jdbc.SQLServerConnection.connect (SQLServerConnection.java:827) в com.microsoft.sqlserver.jdbc.SQLServerConnection.connect (SQLServerConnection.java:827) в com.microsoft.java:827 .sqlserver.jdbc.SQLServerDriver.connect (SQLServerDriver. java: 1012) в java.sql.DriverManager.getConnection (Неизвестный источник) в java.sql.DriverManager.getConnection (Неизвестный источник) в TestDbConnection.mainction. Причина: javax.net.ssl.SSLKeyException: ошибка секретного ключа RSA на com.sun.net.ssl.internal.ssl.RSAClientKeyExchange. (Неизвестный источник) на com.sun.net.ssl .internal.ssl.ClientHandshaker.serverHelloDone (Неизвестный источник) в com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage (Неизвестный источник) в com.sun.net.ssl.internal.ssl.Handshaker.processLoop (Неизвестный Источник) на com.sun.net.ssl.internal.ssl.Hand shaker.process_record (неизвестный источник) в com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord (неизвестный источник)
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLSer
известный источник) на com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake (Неизвестный источник) на com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake (Неизвестный источник) на com.microsoft. sqlserver.jdbc.TDSChannel.enableSSL (IOBuffer.java:1618)
at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Un
Я предоставляю внешнюю папку lib с
sqljdbc4.jar
в ней и запускаю свой JAR, используяjava -Djava.ext.dirs=lib -jar TestDB.jar
... 7 more Caused by: java.security.NoSuchAlgorithmException: SunTlsRsaPremasterSecret KeyG enerator not available at javax.crypto.KeyGenerator.<init>(DashoA13*..) at javax.crypto.KeyGenerator.getInstance(DashoA13*..) at com.sun.net.ssl.internal.ssl.JsseJce.getKeyGenerator(Unknown Source) ... 17 more
Я прочитал разные посты, но ничего не вышло.
Экспорт его как SQL Server 2008
JAR после выбора опции sqljdbc4.jar
решил проблему. Обычный JAR каким-то образом не смог получить доступ к папке
at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLSer
.
псевдонимы: [1.2.840.113549.1.1, OID.1.2.840.113549.1.1], SunJSSE: Signature.MD2withRSA -> sun.security.rsa .RSASignature $ MD2withRSA
псевдонимы: [1.2.840.113549.1.1.2, OID.1.2.840.113549.1.1.2], SunJSSE: Signature.MD5withRSA -> sun.security.rsa.RSASignature $ MD5withRSA
псевдонимы: [ 1.2.840.113549.1.1.4, OID.1.2.840.113549.1.1.4], SunJSSE: Signature.SHA1withRSA -> sun.security.rsa.RSASignature $ SHA1withRSA
псевдонимы: [1.2.840.113549.1.1.5, OID .1.2.840.113549.1.1.5, 1.3.14.3.2.29, OID.1 .3.14.3.2.29], SunJSSE: Signature.MD5andSHA1withRSA -> com.sun.net.ssl.internal.ssl.RSASignat ure, SunJSSE: KeyManagerFactory.SunX509 -> com.sun.net.ssl.internal.ssl.KeyManagerF actoryImpl $ SunX509, SunJSSE: KeyManagerFactory.NewSunX509 -> com.sun.net.ssl.internal.ssl.KeyManag erFactoryManagerImpl $ X50 SunX509 -> com.sun.net.ssl.internal.ssl.TrustMana gerFactoryImpl $ SimpleFactory, SunJSSE: TrustManagerFactory.PKIX -> com.sun.net.ssl.internal.ssl.TrustManager FactoryImpl $ PKIXFactory
псевдонимы: [SunPKIX , X509, X.509], SunJSSE: SSLContext.SSL -> com.sun.net.ssl.internal.ssl.SSLContextImpl, SunJSSE: SSLContext.SSLv3 -> com.sun.net.ssl.internal.ssl.SSLContextImpl, SunJSSE: SSLContext.TLS -> com.sun.net.ssl.internal.ssl.SSLCont extImpl, SunJSSE: SSLContext.TLSv1 -> com.sun.net.ssl.internal.ssl.SSLContextImpl, SunJSSE: SSLContext.Default -> com.sun.net.ssl.internal.ssl.DefaultSSLContextI mpl, SunJSSE: KeyStore.PKCSS -> com.sun.net.ssl.internal.pkcs12.PKCS12KeyStore] java.ext.dirs: lib com.microsoft.sqlserver.jdbc.SQLServerException: драйвер не смог установить безопасное соединение с SQL Server с помощью Secure Шифрование Sockets Layer (SSL). Ошибка: «Ошибка секретного ключа предварительного ведущего RSA». ClientConnectionId: c0a357b6-e274-41b2-9fd a-7ef89ebdfb7a по адресу com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate (SQLServerC onnection.java:1667) по адресу com.microsoft.sqlserver.jdnnelc.jd .java: 1668) - person Nick.McDermaid   schedule 11.04.2013