2012-10-04 4 views
0

Я написал пакет Java, который подключается к базе данных SQL Server с использованием JDBC и интегрированной безопасности. Этот пакет работает так же, как и на моей Java IDE. Теперь я пытаюсь получить доступ к некоторым классам в этом пакете из отдельного приложения .NET с помощью IKVM.Подключение к SQL Server в .NET/IKVM с использованием JDBC

Однако теперь я получаю ExceptionInInitializerError в приложении .NET, а трассировка стека показывает, что эта ошибка возникает во время инициализации соединения с базой данных.

Я создал файл app.config для приложения .NET, чтобы добавить драйвер 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 к (с использованием 32-битного auth dll, а не 64-бит), и я получил ту же самую ошибку, которая, как я думал, была нечетной. Затем я удалил эту строку из app.config и получил предупреждение «Не удалось загрузить sqljdbc_auth.dll» с «Этот драйвер не настроен для интегрированной проверки подлинности». SQLServerException.

Я мигрировали код подключения к базе данных через в VB.NET/IKVM и воссоздал оригинальную ошибку, используя эти четыре строки:

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) 

Таким образом, я уверен, что, если я могу получить эти четыре строки работа, моя проблема должна быть решена. У кого-нибудь есть идеи? Заранее спасибо!

+1

Какая ошибка и stacktrace происходят? – Horcrux7

ответ

1

Способ отслеживания того, что происходит, заключается в том, чтобы распечатать исключение (на консоль) с помощью метода Java Throwable.printStackTrace(). Таким образом, вы получаете основную причину.

Try 
    ... 
Catch x as java.lang.ExceptionInInitializerError 
    x.printStackTrace() 
End Try 

Я думаю, что Tthis покажет, что проблема заключается в том, что вы забыли скопировать IKVM-родной-win32-x86.dll (или IKVM-нативную win32-x64.dll) в каталог приложения.

Смежные вопросы