加载DB2 JDBC驱动程序时出现java.lang.UnsatisfiedLinkError

我尝试使用jboss-seam与db2数据库,发生以下错误

com.ibm.db2.jcc.a.SqlException: [jcc][10389][12245][3.52.95] while loading the native library db2jcct2, java.lang.UnsatisfiedLinkError: no db2jcct2 in java.library.path an error occurred ERRORCODE=-4472, SQLSTATE=null 

我尝试设置-Djava.library.path=/opt/IBM/db2/V9.5/lib64以及

 -Djava.library.path=/opt/IBM/db2/V9.5/lib32 

这两个路径都包含libdb2jcct2.so

我也尝试设置LD_LIBRARY_PATH无效。

操作系统是MacOs

编辑我也尝试使用JDBC4驱动程序db2jcc4.jar,因为jdbc4驱动程序不应该依赖本机库。

用于JDBC和SQLJ的IBM数据服务器驱动程序包括Type 2和Type 4 JDBC驱动程序。 请检查以下内容:

1)确保驱动程序在您的类路径中:db2jcc.jar。 或者,您可以使用JDBC4驱动程序(db2jcc4.jar),但不要将它们都放在类路径中。

2)确保在应用程序配置中指定JCC驱动程序( com.ibm.db2.jcc.DB2Driver )。

3)使用类似4的URL,如jdbc:db2://server:port/database 。 如果指定类型为2的URL,如jdbc:db2:database则驱动程序将开始查找本机库。

您是否尝试过设置DYLD_LIBRARY_PATH ? 可能值得一试。

从路径看,这看起来像linux / unix平台。 尝试运行strace / truss以查看哪些目录正在为库打开。

附加“driverType = 4;” 到你的url。

我无法在任何地方找到明确的例子,所以我在这里粘贴我的解决方案。 修复我的是添加“DriverType”值为“4”的xa-datasource属性。

    my.server.com   SAMBLEDB   50000   4  ibmdb2  false   username supersecret       true     

如果java.library.path (使用LD_LIBRARY_PATH env。变量分配)是错误的,那么实际应该得到类似:“加载t2本机库失败”。

如果包含这样的路径,您可以检查java.library.path

System.out.println(System.getProperty("java.library.path"));

你能否错过像db2jcc_license_cu.jar这样的另一个jar

也许发布你的类路径。 你可以通过从coide读取属性java.class.path来获得它(如上所述)。