2012-10-04 5 views
0

JDBC 및 통합 보안을 사용하여 SQL Server 데이터베이스에 연결하는 Java 패키지를 작성했습니다. 이 패키지는 Java IDE에서 의도 한대로 실행됩니다. 이제 IKVM을 사용하는 별도의 .NET 응용 프로그램에서이 패키지의 일부 클래스에 액세스하려고합니다.JDBC를 사용하는 .NET/IKVM의 SQL Server에 연결

그러나 이제 .NET 응용 프로그램에서 ExceptionInInitializerError가 발생하고 스택 추적에서 데이터베이스 연결 초기화 중이 오류가 발생 함을 보여줍니다.

<add key="ikvm:java.library.path" value="C:\Microsoft JDBC Driver 4.0 for SQL Server\sqljdbc_4.0\enu\auth\x64"/> 

내가 32 비트를 사용 (86을 \ 위해 \ x64의를 변경 시도 :

내가 사용하는 자바 라이브러리 경로에 JDBC 드라이버를 추가 할 수있는 .NET 응용 프로그램에 대한 app.config 파일을 생성 64 비트가 아닌 auth dll), 나는 똑같은 오류를 받았는데, 나는 이상하다고 생각했다. 그런 다음 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

어떤 오류 및 스택 추적이 발생합니까? – 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)을 복사하는 것을 잊었다는 것을 보여주는 것입니다.

관련 문제