Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
加载DB2 JDBC驱动程序时发生java.lang.UnsatifiedLinkError_Java_Macos_Jdbc_Db2 - Fatal编程技术网

加载DB2 JDBC驱动程序时发生java.lang.UnsatifiedLinkError

加载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

我尝试将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=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>