Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.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
Java libJdbcOdbc SQLAllocEnv未定义和动态链接_Java_Jdbc_Shared Libraries_Elf - Fatal编程技术网

Java libJdbcOdbc SQLAllocEnv未定义和动态链接

Java libJdbcOdbc SQLAllocEnv未定义和动态链接,java,jdbc,shared-libraries,elf,Java,Jdbc,Shared Libraries,Elf,我在运行应用程序时收到消息 java: symbol lookup error: /usr/java/jdk1.7.0_09/jre/lib/amd64/libJdbcOdbc.so: undefined symbol: SQLAllocEnv 应用程序的目的是使用Pentaho kettle jar文件将数据从一台服务器迁移到另一台服务器。我正在目标服务器上使用Jdbc Odbc连接。我最近从Oracles网站安装了java(jre和jdk)。当我设定 export LD_DEBUG=all

我在运行应用程序时收到消息

java: symbol lookup error: /usr/java/jdk1.7.0_09/jre/lib/amd64/libJdbcOdbc.so: undefined symbol: SQLAllocEnv
应用程序的目的是使用Pentaho kettle jar文件将数据从一台服务器迁移到另一台服务器。我正在目标服务器上使用Jdbc Odbc连接。我最近从Oracles网站安装了java(jre和jdk)。当我设定

export LD_DEBUG=all
我看到以下回应

binding file /usr/java/jdk1.7.0_09/jre/lib/amd64/libJdbcOdbc.so [0] to /lib64/libc.so.6 [0]: normal symbol `__cxa_finalize' [GLIBC_2.2.5]
      5193:
      5193:     calling init: /usr/java/jdk1.7.0_09/jre/lib/amd64/libJdbcOdbc.so
      5193:
      5193:     opening file=/usr/java/jdk1.7.0_09/jre/lib/amd64/libJdbcOdbc.so [0]; direct_opencount=1
      5193:
      5193:     symbol=JNI_OnLoad;  lookup in file=/usr/java/jdk1.7.0_09/jre/lib/amd64/libJdbcOdbc.so [0]
      5193:     symbol=JNI_OnLoad;  lookup in file=/usr/java/jdk1.7.0_09/jre/lib/amd64/libjava.so [0]
      5193:     binding file /usr/java/jdk1.7.0_09/jre/lib/amd64/libJdbcOdbc.so [0] to /usr/java/jdk1.7.0_09/jre/lib/amd64/libjava.so [0]: normal symbol `JNI_OnLoad'
      5193:     symbol=Java_sun_jdbc_odbc_JdbcOdbc_allocEnv;  lookup in file=/usr/java/jdk1.7.0_09/jre/lib/amd64/libjava.so [0]
      5193:     symbol=Java_sun_jdbc_odbc_JdbcOdbc_allocEnv;  lookup in file=/usr/java/jdk1.7.0_09/jre/lib/amd64/server/libjvm.so [0]
      5193:     symbol=Java_sun_jdbc_odbc_JdbcOdbc_allocEnv;  lookup in file=/usr/java/jdk1.7.0_09/jre/lib/amd64/libverify.so [0]
      5193:     symbol=Java_sun_jdbc_odbc_JdbcOdbc_allocEnv;  lookup in file=/lib64/libdl.so.2 [0]
      5193:     symbol=Java_sun_jdbc_odbc_JdbcOdbc_allocEnv;  lookup in file=/lib64/libc.so.6 [0]
      5193:     symbol=Java_sun_jdbc_odbc_JdbcOdbc_allocEnv;  lookup in file=/lib64/libm.so.6 [0]
      5193:     symbol=Java_sun_jdbc_odbc_JdbcOdbc_allocEnv;  lookup in file=/lib64/libpthread.so.0 [0]
      5193:     symbol=Java_sun_jdbc_odbc_JdbcOdbc_allocEnv;  lookup in file=/lib64/ld-linux-x86-64.so.2 [0]
      5193:     /usr/java/jdk1.7.0_09/jre/lib/amd64/libjava.so: error: symbol lookup error: undefined symbol: Java_sun_jdbc_odbc_JdbcOdbc_allocEnv (fatal)
      5193:     symbol=Java_sun_jdbc_odbc_JdbcOdbc_allocEnv;  lookup in file=/usr/java/jdk1.7.0_09/jre/lib/amd64/libzip.so [0]
      5193:     symbol=Java_sun_jdbc_odbc_JdbcOdbc_allocEnv;  lookup in file=/usr/java/jdk1.7.0_09/jre/lib/amd64/server/libjvm.so [0]
      5193:     symbol=Java_sun_jdbc_odbc_JdbcOdbc_allocEnv;  lookup in file=/usr/java/jdk1.7.0_09/jre/lib/amd64/libjava.so [0]
      5193:     symbol=Java_sun_jdbc_odbc_JdbcOdbc_allocEnv;  lookup in file=/lib64/libc.so.6 [0]
      5193:     symbol=Java_sun_jdbc_odbc_JdbcOdbc_allocEnv;  lookup in file=/lib64/libm.so.6 [0]
      5193:     symbol=Java_sun_jdbc_odbc_JdbcOdbc_allocEnv;  lookup in file=/lib64/libdl.so.2 [0]
      5193:     symbol=Java_sun_jdbc_odbc_JdbcOdbc_allocEnv;  lookup in file=/lib64/libpthread.so.0 [0]
      5193:     symbol=Java_sun_jdbc_odbc_JdbcOdbc_allocEnv;  lookup in file=/lib64/ld-linux-x86-64.so.2 [0]
      5193:     symbol=Java_sun_jdbc_odbc_JdbcOdbc_allocEnv;  lookup in file=/usr/java/jdk1.7.0_09/jre/lib/amd64/libverify.so [0]
      5193:     /usr/java/jdk1.7.0_09/jre/lib/amd64/libzip.so: error: symbol lookup error: undefined symbol: Java_sun_jdbc_odbc_JdbcOdbc_allocEnv (fatal)
      5193:     symbol=Java_sun_jdbc_odbc_JdbcOdbc_allocEnv;  lookup in file=/usr/java/jdk1.7.0_09/jre/lib/amd64/libnio.so [0]
      5193:     symbol=Java_sun_jdbc_odbc_JdbcOdbc_allocEnv;  lookup in file=/usr/java/jdk1.7.0_09/jre/lib/amd64/libjava.so [0]
      5193:     symbol=Java_sun_jdbc_odbc_JdbcOdbc_allocEnv;  lookup in file=/usr/java/jdk1.7.0_09/jre/lib/amd64/libnet.so [0]
      5193:     symbol=Java_sun_jdbc_odbc_JdbcOdbc_allocEnv;  lookup in file=/lib64/libpthread.so.0 [0]
      5193:     symbol=Java_sun_jdbc_odbc_JdbcOdbc_allocEnv;  lookup in file=/lib64/libdl.so.2 [0]
      5193:     symbol=Java_sun_jdbc_odbc_JdbcOdbc_allocEnv;  lookup in file=/lib64/libc.so.6 [0]
      5193:     symbol=Java_sun_jdbc_odbc_JdbcOdbc_allocEnv;  lookup in file=/usr/java/jdk1.7.0_09/jre/lib/amd64/server/libjvm.so [0]
      5193:     symbol=Java_sun_jdbc_odbc_JdbcOdbc_allocEnv;  lookup in file=/usr/java/jdk1.7.0_09/jre/lib/amd64/libverify.so [0]
      5193:     symbol=Java_sun_jdbc_odbc_JdbcOdbc_allocEnv;  lookup in file=/lib64/ld-linux-x86-64.so.2 [0]
      5193:     symbol=Java_sun_jdbc_odbc_JdbcOdbc_allocEnv;  lookup in file=/lib64/libm.so.6 [0]
      5193:     /usr/java/jdk1.7.0_09/jre/lib/amd64/libnio.so: error: symbol lookup error: undefined symbol: Java_sun_jdbc_odbc_JdbcOdbc_allocEnv (fatal)
      5193:     symbol=Java_sun_jdbc_odbc_JdbcOdbc_allocEnv;  lookup in file=/usr/java/jdk1.7.0_09/jre/lib/amd64/libJdbcOdbc.so [0]
      5193:     binding file /usr/java/jdk1.7.0_09/jre/lib/amd64/libJdbcOdbc.so [0] to /usr/java/jdk1.7.0_09/jre/lib/amd64/libJdbcOdbc.so [0]: normal symbol `Java_sun_jdbc_odbc_JdbcOdbc_allocEnv'
      5193:     symbol=SQLAllocEnv;  lookup in file=java [0]
      5193:     symbol=SQLAllocEnv;  lookup in file=/lib64/libpthread.so.0 [0]
      5193:     symbol=SQLAllocEnv;  lookup in file=/usr/java/jdk1.7.0_09/bin/../jre/lib/amd64/jli/libjli.so [0]
      5193:     symbol=SQLAllocEnv;  lookup in file=/lib64/libdl.so.2 [0]
      5193:     symbol=SQLAllocEnv;  lookup in file=/lib64/libc.so.6 [0]
      5193:     symbol=SQLAllocEnv;  lookup in file=/lib64/ld-linux-x86-64.so.2 [0]
      5193:     symbol=SQLAllocEnv;  lookup in file=/usr/java/jdk1.7.0_09/jre/lib/amd64/server/libjvm.so [0]
      5193:     symbol=SQLAllocEnv;  lookup in file=/lib64/libm.so.6 [0]
      5193:     symbol=SQLAllocEnv;  lookup in file=/usr/java/jdk1.7.0_09/jre/lib/amd64/libJdbcOdbc.so [0]
      5193:     symbol=SQLAllocEnv;  lookup in file=/usr/java/jdk1.7.0_09/jre/lib/amd64/libjava.so [0]
      5193:     symbol=SQLAllocEnv;  lookup in file=/usr/java/jdk1.7.0_09/jre/lib/amd64/server/libjvm.so [0]
      5193:     symbol=SQLAllocEnv;  lookup in file=/lib64/libc.so.6 [0]
      5193:     symbol=SQLAllocEnv;  lookup in file=/usr/java/jdk1.7.0_09/jre/lib/amd64/libverify.so [0]
      5193:     symbol=SQLAllocEnv;  lookup in file=/lib64/libdl.so.2 [0]
      5193:     symbol=SQLAllocEnv;  lookup in file=/lib64/libm.so.6 [0]
      5193:     symbol=SQLAllocEnv;  lookup in file=/lib64/libpthread.so.0 [0]
      5193:     symbol=SQLAllocEnv;  lookup in file=/lib64/ld-linux-x86-64.so.2 [0]
      5193:     /usr/java/jdk1.7.0_09/jre/lib/amd64/libJdbcOdbc.so: error: symbol lookup error: undefined symbol: SQLAllocEnv (fatal)
我已经安装了unixODBC,这些函数的实现位于libodbc.so(libodbc.so.2.0.0的符号链接)中

我的LD_LIBRARY_路径中有/usr/local/lib(我确实导出了)。我还在/etc/ld.so.conf.d中放置了一个新的配置文件,并运行了ldconfig。但由于某些原因,此函数(可能还有其他函数)将无法加载

有没有人能给我一些建议来解决这个问题。据我所知,当链接器动态解析调用时,它将使用LD_LIBRARY_路径搜索elf文件。这是正确的吗?是否有某种索引可以用来查找具有所需函数的共享库?我知道创建的ld.so.cache,但必须有一些索引,即。 SQLAllocEnv->x.so、libodbc.so等。是什么让链接器在这些特定文件中查找符号对象


谢谢

此错误仅表示在默认位置找不到几个库文件。在本例中,您可以像export LD_LIBRARY_PATH=/usr/java/latest/jre/lib/amd64那样导出此文件。它应该解决这个问题

nm -a /usr/local/lib/libodbc.so | grep "SQLAllocEnv"
0000000000006f30 T SQLAllocEnv
0000000000000000 a SQLAllocEnv.c
ldd /usr/java/latest/jre/lib/amd64/libJdbcOdbc.so
        linux-vdso.so.1 =>  (0x00007fff09728000)
        libjava.so => /usr/java/latest/jre/lib/amd64/libjava.so (0x00007fb8d03ab000)
        libjvm.so => not found
        libc.so.6 => /lib64/libc.so.6 (0x00007fb8d000d000)
        libjvm.so => not found
        libverify.so => /usr/java/latest/jre/lib/amd64/libverify.so (0x00007fb8cfdfe000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007fb8cfbfa000)
        /lib64/ld-linux-x86-64.so.2 (0x000000368b000000)
        libjvm.so => not found