JNotifylinux下部署出现的问题

最近在工程中用到JNotify,linux下部署的时候需要引入libjnotify.so,具体的布置可参考http://lichuanbao.iteye.com/blog/1335253.

 

系统启动时,一直抛出异常java.lang.NoClassDefFoundError: Could not initialize class net.contentobjects.jnotify.JNotify。localhost.*.log日志中抛出异常java.lang.UnsatisfiedLinkError: no jnotify in java.library.path

按照网上说明,配置libjnotify.so,重启;tomcat的日志中依旧抛异常信息java.lang.NoClassDefFoundError: Could not initialize class net.contentobjects.jnotify.JNotify。

确认了JNotify的jar包及libjnotify.so都已经正确的配置了,后来发现在tomcat的localhost.*.log日志中抛出异常java.lang.UnsatisfiedLinkError: /var/hmp/libjnotify/libjnotify.so: /var/hmp/libjnotify/libjnotify.so: wrong ELF class: ELFCLASS64 (P

ossible cause: architecture word width mismatch)

        at java.lang.ClassLoader$NativeLibrary.load(Native Method)

原因是引入的libjnotify.so是64位系统的,而本身工程布置的linux为32位机,libjnotify.so与linux内核不符。

 

重新上传32位的libjnotify.so,重启,异常信息还是java.lang.NoClassDefFoundError: Could not initialize class net.contentobjects.jnotify.JNotify。而tomcat的localhost.*.log日志中抛出异常java.lang.UnsatisfiedLinkError: /usr/java/jdk1.6.0_34/jre/lib/i386/libjnotify.so: /lib/libc.so.6: version `GLIBC_2.12' not found (required by /usr/java/jdk1.6.0_34/jre/lib/i386/libjnotify.so)。

 

[root@localhost i386]# ldd -v libjnotify.so

ldd: warning: you do not have execution permission for `./libjnotify.so'

./libjnotify.so: /lib/libc.so.6: version `GLIBC_2.12' not found (required by ./libjnotify.so)

        linux-gate.so.1 =>  (0x0032f000)

        libc.so.6 => /lib/libc.so.6 (0x00c4c000)

        /lib/ld-linux.so.2 (0x002b2000)

 

        Version information:

        ./libjnotify.so:

                libc.so.6 (GLIBC_2.12) => not found

                libc.so.6 (GLIBC_2.1.3) => /lib/libc.so.6

                libc.so.6 (GLIBC_2.0) => /lib/libc.so.6

        /lib/libc.so.6:

                ld-linux.so.2 (GLIBC_PRIVATE) => /lib/ld-linux.so.2

                ld-linux.so.2 (GLIBC_2.3) => /lib/ld-linux.so.2

                ld-linux.so.2 (GLIBC_2.1) => /lib/ld-linux.so.2

 

网上搜索到的解决方法有两个:

1、You can upgrade your CentOS version to 6.* to get the GCLIB_2.12 and above.

2、 you need create a libjnotify.soand remove the dependency on GCLIB_2.12

具体方法为:

  cd ~/compile

mkdir jnotify

cd jnotify

unzip ~/downloads/jnotify-lib-0.94.zip

mkdir src

cd src

unzip ../jnotify-native-linux-0.94-src.zip

cd Release

export C_INCLUDE_PATH=/usr/java/jdk1.7.0_07/include/:/usr/java/jdk1.7.0_07/include/linux/

make

 

 

[root@localhost Release]# ldd -v libjnotify.so linux-gate.so.1 => (0x00d60000) libc.so.6 => /lib/libc.so.6 (0x008d7000) /lib/ld-linux.so.2 (0x002b2000) Version information: ./libjnotify.so: libc.so.6 (GLIBC_2.1.3) => /lib/libc.so.6 libc.so.6 (GLIBC_2.4) => /lib/libc.so.6 libc.so.6 (GLIBC_2.0) => /lib/libc.so.6 /lib/libc.so.6: ld-linux.so.2 (GLIBC_PRIVATE) => /lib/ld-linux.so.2 ld-linux.so.2 (GLIBC_2.3) => /lib/ld-linux.so.2 ld-linux.so.2 (GLIBC_2.1) => /lib/ld-linux.so.2

 

另外一种方式:可以更换适合版本的libjnotify.so (我的工程中按照上述第二种方式及更换libjnotify.so为0.93版的均实验通过)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值