jnetpcap在windows下和linux下需要不同的包(如共享库,在windows下是.dll,在linux下是.so文件案),所以跨平台编译会遇见问题,感觉主要的问题还是libpcap的版本问题(在ubuntu下编译直接解决问题1问题2就结束了,centos上libpcap版本不兼容,只好强行修改)
在centos 7下编译含jnetpcap包的文件(libpcap已经安装完毕)
问题1: 出现错误:
java.lang.UnsatisfiedLinkError: no jnetpcap in java.library.path
用下面的链接下载:jnetpcap-1.3.0-1.ubuntu.x86_64.tgz
https://sourceforge.net/projects/jnetpcap/files/jnetpcap/1.3/jnetpcap-1.3.0-1.ubuntu.x86_64.tgz/download
下载完成后解压并复制到项目的lib文件夹下,后用idea导入依赖(包括jar包)
问题2:出现错误:
jnetpcap com.slytechs.library.NativeLibrary.dlopen(Ljava/lang/String;)J
使用idea导入下载的jnetpcap包中的.so文件,并且将该文件复制到jdk/jre/lib/amd64(自己的jdk目录中)
问题3:出现错误:
re/lib/amd64/libjnetpcap.so: libpcap.so.0.8: 无法打开共享对象文件: 没有那个文件或目录
找到libpcap.so文件:
使用命令查看安装版本$ rpm -qa | grep libpcap
libpcap-1.5.3-11.el7.x86_64
找出该版本的对应文件$ rpm -ql libpcap-1.5.3-11.el7.x86_64
/usr/lib64/libpcap.so.1
/usr/lib64/libpcap.so.1.5.3
/usr/share/doc/libpcap-1.5.3
/usr/share/doc/libpcap-1.5.3/CHANGES
/usr/share/doc/libpcap-1.5.3/CREDITS
/usr/share/doc/libpcap-1.5.3/LICENSE
/usr/share/doc/libpcap-1.5.3/README
/usr/share/man/man7/pcap-filter.7.gz
/usr/share/man/man7/pcap-linktype.7.gz
/usr/share/man/man7/pcap-tstamp.7.gz
发现只有libpcap.so.1,没有libpcap.so.0.8,将libpcap.so.1复制备份一份,并修改名字为libpcap.so.0.8
再次运行,可以使用
若还是存在无法找到文件的问题
将libpcap.so.1所在目录添加到文件/etc/ld.so.conf中,
打开ld.so.conf文件,然后将libpcap.so目录添加进去
includeld.so.conf.d/*.conf #原来的内容
# 自己的目录
/usr/lib64
/usr/local/lib
然后保存,再终端下执行 ldconfig
参考网址:
https://blog.csdn.net/weixin_35757704/article/details/78625091
在CentOS 7上编译包含jnetpcap的项目时,遇到libpcap版本不兼容的问题。通过下载特定版本的jnetpcap包,解压并将.so文件复制到JDK目录,以及创建libpcap.so.0.8软链接或添加到ld.so.conf来解决找不到共享对象文件的错误。

9624

被折叠的 条评论
为什么被折叠?



