java.lang.UnsatisfiedLinkError при загрузке драйвера JDBC DB2 - PullRequest
10 голосов
/ 18 октября 2010

Я пытаюсь использовать 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водители не должны полагаться на родных библиотек.

Ответы [ 6 ]

23 голосов
/ 19 октября 2010

Драйвер IBM Data Server для JDBC и SQLJ включает драйверы JDBC типа 2 и типа 4. Пожалуйста, проверьте следующее:

1) Убедитесь, что драйвер находится в вашем classpath: db2jcc.jar. В качестве альтернативы вы можете использовать драйвер JDBC4 (db2jcc4.jar), но не помещать оба в classpath.

2) Убедитесь, что вы указали драйвер JCC (com.ibm.db2.jcc.DB2Driver) в конфигурации вашего приложения.

3) Используйте URL-адрес типа 4, например jdbc:db2://server:port/database. Если вы укажете URL-адрес типа 2, например jdbc:db2:database, драйвер начнет искать собственные библиотеки.

2 голосов
/ 18 октября 2010

С пути это выглядит как платформа Linux / Unix.Попробуйте запустить strace / truss , чтобы увидеть, какие каталоги открываются для библиотеки.

2 голосов
/ 18 октября 2010

Вы тоже пытались установить DYLD_LIBRARY_PATH? Может быть стоит выстрел.

1 голос
/ 07 ноября 2011

Добавить "driverType = 4;" на ваш URL.

0 голосов
/ 10 июня 2016

Я не смог найти четкого примера нигде, поэтому я вставляю свое решение здесь.Что меня исправило, так это добавление свойства xa-datasource-свойства со значением «DriverType» «4».

            <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>
0 голосов
/ 18 октября 2010

Если java.library.path (назначено с помощью переменной en_. LD_LIBRARY_PATH) неверно, вы должны получить что-то вроде: «сбой загрузки собственной библиотеки t2».

Вы можете проверить java.library.path для настройкиесли путь указан следующим образом.

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

Не могли бы вы пропустить еще одну банку, например db2jcc_license_cu.jar

Возможно, опубликуйте свой путь к классу.Вы можете получить его, прочитав свойство java.class.path из кода (как указано выше).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...