Issue Description
An exception occurs when trying to use Sybase SQL Anywhere 16 with Jaspersoft Studio:
java.lang.UnsatisfiedLinkError: Native Library C:Program FilesSQL Anywhere 16Bin64dbjdbc16.dll already loaded in another classloader at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1904) at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1854) at java.lang.Runtime.loadLibrary0(Runtime.java:870) at java.lang.System.loadLibrary(System.java:1122) at sybase.jdbc4.sqlanywhere.IDriver.try_load(IDriver.java:485) at sybase.jdbc4.sqlanywhere.IDriver.(IDriver.java:423) at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:348) at net.sf.jasperreports.engine.util.JRClassLoader.loadClassForRealName(JRClassLoader.java:156) at net.sf.jasperreports.data.jdbc.JdbcDataAdapterService.getConnection(JdbcDataAdapterService.java:145) ...
Resolution
The customer was trying to use the Sybase driver which was a Type 2 jdbc driver. Type 2 jdbc drivers don't connect directly to a db server, they go thru layers of proprietary db vendor-specific code first, like .dlls on a windows machine. In contrast, Type 4 jdbc drivers make a db connection directly via sockets to the server.
Studio classloading seems to have problems with these types of older drivers which connect via native files like .dlls.
There is a workaround, similar to answer #2 here - http://stackoverflow.com/questions/10637585/native-library-sqljdbc-auth-dll-already-loaded-in-another-classloader
1) Copy sajdbc4.jar from the Sybase Java folder ("SQL Anywhere 16Java") to "Program FilesTIBCOJaspersoft Studio-6.2.0.finalfeaturesjre.win32.win32.x86_64.feature_1.8.0.u74jrelibext"
2) Copy the DLLs from the Sybase bin folder ("SQL Anywhere 16Bin64") to "Program FilesTIBCOJaspersoft Studio-6.2.0.finalfeaturesjre.win32.win32.x86_64.feature_1.8.0.u74"
Ref. Case 00067659
Recommended Comments
There are no comments to display.