JDBC と統合セキュリティを使用して SQL Server データベースに接続する Java パッケージを作成しました。このパッケージは、Java IDE から意図したとおりに実行されます。現在、IKVM を使用して別の .NET アプリからこのパッケージのいくつかのクラスにアクセスしようとしています。
ただし、現在、.NET アプリで ExceptionInInitializerError が発生しています。スタック トレースは、データベース接続の初期化中にこのエラーが発生したことを示しています。
以下を使用して、.NET アプリ用の app.config ファイルを作成し、JDBC ドライバーを Java ライブラリ パスに追加します。
<add key="ikvm:java.library.path" value="C:\Microsoft JDBC Driver 4.0 for SQL Server\sqljdbc_4.0\enu\auth\x64"/>
\x64 を \x86 に変更しようとしましたが (64 ビットではなく 32 ビットの認証 dll を使用)、まったく同じエラーを受け取りましたが、これは奇妙だと思いました。次に、app.config からこの行を削除したところ、「このドライバーは統合認証用に構成されていません」という「sqljdbc_auth.dll の読み込みに失敗しました」という警告が表示されました。SQL サーバー例外。
データベース接続コードを VB.NET/IKVM に移行し、次の 4 行を使用して元のエラーを再現しました。
Dim connectionUrl As String = "jdbc:sqlserver://db\instance;integratedsecurity=true"
Dim driver As String = "com.microsoft.sqlserver.jdbc.SQLServerDriver"
java.sql.DriverManager.registerDriver(New com.microsoft.sqlserver.jdbc.SQLServerDriver())
Dim dbConn As java.sql.Connection = java.sql.DriverManager.getConnection(connectionUrl)
したがって、これらの 4 つの行を機能させることができれば、問題は解決されるはずです。誰にもアイデアはありますか?前もって感謝します!