加载DB2 JDBC驱动程序时发生java.lang.UnsatifiedLinkError
我尝试将JBossSeam用于db2数据库,出现以下错误加载DB2 JDBC驱动程序时发生java.lang.UnsatifiedLinkError,java,macos,jdbc,db2,Java,Macos,Jdbc,Db2,我尝试将JBossSeam用于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=nul
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\u LIBRARY\u路径
,但没有效果
操作系统是MacOs
编辑
我还尝试使用JDBC4驱动程序db2jcc4.jar,因为JDBC4驱动程序不应该依赖本机libs。您是否也尝试过设置
DYLD\u LIBRARY\u PATH
?可能值得一试。从路径上看,这看起来是一个linux/unix平台。尝试运行以查看正在为库打开哪些目录 如果java.library.path
(使用LD_library_path env.variable指定)错误,您应该实际得到类似这样的结果:“t2本机库加载失败”
如果路径是这样包含的,您可以检查se的java.library.path
System.out.println(System.getProperty(“java.library.path”)代码>
您是否会丢失另一个jar,如db2jcc\u license\u cu.jar
也许发布你的类路径。您可以通过从coide(如上所示)读取属性java.class.path
来获得它。用于JDBC和SQLJ的IBM数据服务器驱动程序包括类型2和类型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
,那么驱动程序将开始查找本机库。在URL中附加一个“driverType=4;”。我在任何地方都找不到清晰的示例,所以我将我的解决方案粘贴到这里。解决我的问题是添加了一个xa数据源属性“DriverType”值为“4”
my.server.com
桑伯莱德
50000
4.
ibmdb2
假的
用户名
超机密
真的
+1 DYLD_LIBRARY_PATH用于MacOs,而不是LD_LIBRARY_PATH+1 good hint,对于记录,mac上的工具称为dtrace。dtrace-n'syscall::open*:条目{printf(“%s%s”,execname,copyinstr(arg0));}
<xa-datasource jndi-name="java:/DB2DataSource" pool-name="DB2DataSource" enabled="true" use-ccm="true">
<xa-datasource-property name="ServerName">
my.server.com
</xa-datasource-property>
<xa-datasource-property name="DatabaseName">
SAMBLEDB
</xa-datasource-property>
<xa-datasource-property name="PortNumber">
50000
</xa-datasource-property>
<xa-datasource-property name="DriverType">
4
</xa-datasource-property>
<driver>ibmdb2</driver>
<xa-pool>
<is-same-rm-override>false</is-same-rm-override>
</xa-pool>
<security>
<user-name>username</user-name>
<password>supersecret</password>
</security>
<recovery>
<recover-plugin class-name="org.jboss.jca.core.recovery.ConfigurableRecoveryPlugin"/>
</recovery>
<validation>
<valid-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.db2.DB2ValidConnectionChecker"/>
<background-validation>true</background-validation>
<stale-connection-checker class-name="org.jboss.jca.adapters.jdbc.extensions.db2.DB2StaleConnectionChecker"/>
<exception-sorter class-name="org.jboss.jca.adapters.jdbc.extensions.db2.DB2ExceptionSorter"/>
</validation>
</xa-datasource>