MQ异常:Can not load MQ libraries from Installation Path

昨天在AIX上成功安装WebSphere MQ7和BROKER8,用mqsicreatebroker 命令准备创建代理时,报以下异常:


$ mqsicreatebroker  BROKER  -q  BROKERQM  -i  wbiadmin  -a  wbiadmin
BIP6123E: Can not load MQ libraries from Installation Path (''  0509-022 Cannot load module /usr/mqm/lib64/libmqm_r.a(libmqm_r.o).
        0509-150   Dependent module /usr/lib/libmqz_r.a(libmqz_r.o) could not be loaded.
        0509-103   The module has an invalid magic number.
        0509-022 Cannot load module /usr/mqm/lib64/libmqm_r.a(libmqm_r.o).
        0509-150   Dependent module /usr/mqm/lib64/libmqm_r.a(libmqm_r.o) could not be loaded.'') due to error ('{1}'). Removing the MQ symbolic links within /usr/lib via the MQ command dltmqlnk may resolve the problem. 
Can not load MQ libraries from Installation Path (''    0509-022 Cannot load module /usr/mqm/lib64/libmqm_r.a(libmqm_r.o).

        0509-150   Dependent module /usr/lib/libmqz_r.a(libmqz_r.o) could not be loaded.
        0509-103   The module has an invalid magic number.
        0509-022 Cannot load module /usr/mqm/lib64/libmqm_r.a(libmqm_r.o).
        0509-150   Dependent module /usr/mqm/lib64/libmqm_r.a(libmqm_r.o) could not be loaded.'') due to error ('{1}'). 
Removing the MQ symbolic links within /usr/lib via the MQ command dltmqlnk may resolve the problem. 

BIP8081E: An error occurred while processing the command. 
An error occurred while the command was running; the command has cleaned up and ended. 
Use messages prior to this one to determine the cause of the error.  
 Check for some common problems:  
 Does the user id have the correct authorities (for example a member of the mqbrkrs group)?  
 Is any operating system limit set too low to allow the command to run?  
 Is the environment correctly set up?  
 Correct the problem and retry the command, otherwise, contact your IBM support center. 



解决方法:
#cd /usr/mqm/bin
#dltmqlnk
执行此命令会看到类似下面信息以删除链接:
deleting /usr/lib/libimqb23ia_r.a
deleting /usr/lib/libmqmcs.a
deleting /usr/lib/libmqmzse.a
deleting /usr/lib/libmqmcs_r.a
deleting /usr/lib/libimqb23ia.a
deleting /usr/lib/libmqjx_r.so
deleting /usr/lib/libmqccics_r.a
deleting /usr/lib/libmqiz_r.a
deleting /usr/lib/libimqc23ia_r.a
deleting /usr/lib/libmqiz.a
deleting /usr/lib/libmqicb_r.a
deleting /usr/lib/libmqic.a
deleting /usr/lib/libimqc23ia.a
deleting /usr/lib/libmqicb.a
deleting /usr/lib/libmqic_r.a
deleting /usr/lib/amqczsc
deleting /usr/lib/amqczscg
deleting /usr/lib/libmqmxa_r.a
deleting /usr/lib/libmqmcb_r.a
deleting /usr/lib/libimqs23ia_r.a
deleting /usr/lib/libmqmcb.a
deleting /usr/lib/libmqmzf_r.a
deleting /usr/lib/libimqs23ia.a
deleting /usr/lib/libmqmxa.a
deleting /usr/lib/libmqmax.a
deleting /usr/lib/libmqml_r.a
deleting /usr/lib/libmqz_r.a
deleting /usr/lib/libmqmr_r.a
deleting /usr/lib/libmqmax_r.a
deleting /usr/lib/libmqm_r.a
deleting /usr/lib/libmqmcics_r.a
deleting /usr/lib/libmqmr.a
deleting /usr/lib/libmqm.a
deleting /usr/lib/libmqmzf.a
deleting /usr/lib/libmqz.a
deleting /usr/lib/libmqjxs_r.so
deleting /usr/lib/amqzscg
deleting /usr/lib/amqzfu
deleting /usr/lib/amqzsc
deleting /usr/lib/libmqcxa_r.a
deleting /usr/lib/libmqcxa.a


删除后,问题解决! 若问题还没解决可参考以下内容
以下内容为问题解决参考博客:

------------------------------------------------------------------------------------------------------------------
M Q V6.0开始的重要新特征之一是在UNIX平台添加了64位的库。dspmqver命令执行时指向64位的MQ库文件(如下所示)
#dump -H -X64 dspmqver
dspmqver:


***Loader Section***
Loader Header Information
VERSION# #SYMtableENT #RELOCent LENidSTR
0x00000001 0x0000001d 0x00000025 0x00000074

#IMPfilID OFFidSTR LENstrTBL OFFstrTBL
0x00000004 0x00000540 0x00000190 0x000005b4 ***Import File Strings***
INDEX PATH BASE MEMBER
0 /usr/mqm/lib64:/usr/lib/threads:/usr/lib:/lib
1 libc_r.a shr_64.o
2 libpthreads.a shr_xpg5_64.o
3 libmqmcs_r.a shr.o
但MQ V6.0在AIX平台安装时会自动在/usr/lib库下创建到MQ所带的32位库的链接;如果“/usr/lib”路径在操作系统的LIBPATH环境变量中指定,执行dspmqver会首先找到/usr/lib下的32位MQ库链接,从而报错。


解决办法如下:

方法1:
在LIBPATH路径中直接将MQ的64位库路径" /usr/mqm/lib64"加上:

方法2:
MQ提供了一个可执行程序dltmqlnk,会将MQV6.0安装时创建的32位库到/usr/lib目录的链接删除掉,这样,执行dspmqver会直接去找MQ的64位库。
#cd /usr/mqm/bin
#dltmqlnk

执行此命令会看到类似下面信息以删除链接:
deleteing /usr/lib/libimqb23ia_r.a
deleteing /usr/lib/libmqmcs.a
deleteing /usr/lib/libmqmzse.a
.... 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个错误是由于Java虚拟机无法加载本地库,因为它找不到相关的依赖库。这可能是由于操作系统缺少必要的库文件或者Java虚拟机版本不兼容导致的。您可以尝试更新Java虚拟机或者安装缺少的依赖库来解决这个问题。 ### 回答2: 这个错误信息提示说,在 JVM(Java虚拟机)初始化的时候,无法加载本机库,因为找不到相关的依赖库。 首先,我们需要了解一下什么是本机库和依赖库。本机库是指针对某种平台的二进制文件,通常使用 C 或 C++ 编写,这些库可以在 Java 应用程序中被使用。比如,可以通过 JNI(Java本机接口)调用本机库来实现更高效的算法。 而依赖库则是指本机或 Java 库所依赖的其它库。如果一个本机库依赖于其它库,但这些库没有被正确地安装或配置,那么就有可能出现找不到依赖库的情况。 那么,具体的解决方法是什么呢?首先,检查本机库和依赖库的路径是否正确。在 Linux 或 Unix 系统上,可以使用“ldd”命令检查本机库的依赖关系。如果存在缺失的依赖库,可以尝试通过下载或更新相应的库文件来解决问题。 另外,还可以尝试重新安装或配置相关的软件包,以确保库文件被正确地安装和配置。如果尝试了上述方法仍然无法解决问题,那么可能需要重新编译本机库或使用不同版本的依赖库。 总之,出现这种错误提示,通常是由于本机库或依赖库的问题导致的。通过检查路径和更新相关的软件包,可以解决这种问题。如果还无法解决,可以考虑重新编译本机库或使用不同版本的依赖库。 ### 回答3: 在Java程序运行过程中,有时候会遇到类似于“error occurred during initialization of vm unable to load native library: can't find dependent libraries”这样的错误提示,这个错误提示主要是由于Java虚拟机加载本地库时出现了问题。具体来说,当我们在一个Java应用程序中调用了使用了本机库的代码时,Java虚拟机会尝试加载本地库,但如果它无法找到要加载的本地库或者某些依赖库时,就会出现这样的错误提示。 那么我们该如何解决这个问题呢?首先,我们需要确认我们所调用的本机库、Java虚拟机和依赖库的版本是否匹配。如果版本不匹配,可能会导致Java虚拟机无法找到依赖库或者无法正确加载本地库。我们还可以尝试在JVM启动命令中指定本地库路径,如“-Djava.library.path=/path/to/lib”,这样可以让Java虚拟机直接找到要加载的本地库。另外,我们也可以尝试使用动态链接(dlopen)和动态符号解析(dlsym)等方法来自行加载本地库和依赖库,以避免Java虚拟机和操作系统加载本地库时出现的问题。 总之,当出现“unable to load native library: can't find dependent libraries”这样的错误提示时,我们需要先检查本机库和依赖库的版本是否匹配,并且可以尝试在启动命令中指定本地库路径来解决问题。如果问题依然存在,我们可以考虑使用动态链接和动态符号解析等方法来手动加载本地库和依赖库。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值