加载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
来获得它(如上所述)。