记录jpcap在Ubuntu&Window下的配置过程
众所周知,Java虽然在TCP/UDP传输方面给予了良好的定义,但是标准库java.net对于网络层以下的控制是无能为力的。Jpcap就是为了处理这一问题而出现的中间件。它调用底层的winpcap/libpcap来实现对数据链路层的控制,并给Java语言提供一个公共的接口,从而实现了平台无关性。
本文不涉及到介绍Jpcap的应用,只是简单地记录一下在Ubuntu & Windows 下安装及配置Jpcap的过程。
学习Jpcap的使用,请转到 jpcap入门指南
一、Ubuntu下配置过程
前置条件,确保安装有build-essential 和 libpcap包
build-essential 可以直接用 apt-get 安装。而libpcap则不可以,我参考的这一博客Ubuntu 14.04下安装libpcap
下面开始安装Jpcap,首先下载源码:
git clone --recursive https://github.com/mgodave/Jpcap.git
编译:
在./Jpcap/src/main/c中,执行
make
将编译得到的文件放到可寻址的路径:
将生成的libjpcap.so文件拷贝到 $JAVA_HOME/jre/lib/<arch>目录下。
注:arch对应计算机架构,如i386,amd64,sparc等
$JAVA_HOME对于Debian系列Linux一般指 /usr/lib/jvm/default-java 目录
如果是Java 6版本,则将libjpcap.so拷到 /usr/java/packages/lib/exf中。
将 ./Jpcap/lib/jpcap.jar 拷到 $JAVA_HOME/lib/目录下。
最后需要保证$JAVA_HOME/lib、$JAVA_HOME/jre/lib在CLASSPATH路径中(一般配置java时候,都已添加。)
然后,顺利的话,应该已经可以编译、运行有调用jpcap库的java程序了。
运行中可能会遇到的错误:
libpcap.so.1 cannot open shared object file no such file or directory
对于这个问题,我们可以发现 libpcap.so.1文件就在/usr/local/lib目录下,然而程序在执行libjpcap.so中调用libpcap的代码是无法找到该文件,这里我们需要手动添加其到 /etc/ld.so.conf 中。
在 ld.so.conf, 添加两行:
/usr/local/lib
/usr/lib
然后执行:
ldconfig
这时再运行程序应该不会出现该错误了。
couldn't find default device: no suitable device found
原因:没有以root身份运行。
二、Windows下安装及配置Jpcap
前置条件,确保安装有winpcap。
有两种方式:
第一种
运行JpcaSetup-0.7.exe (Binary installer),一路next,最后选择Jpcap.dll 和 jpcap.jar 的安装位置,一般情况下,Jpcap.dll 安装在 C:\Windows\System32 目录下, jpcap.jar 安装在 C:\Windows\Sun\Java\lib\ext 目录下。
然后为了方便Java程序中的调用,我们还需要将Jpcap.dll 复制到 jre 路径下的 bin 文件夹下, 将 jpcap.jar 复制到 jre路径下的 lib\ext 文件夹下。
第二种
直接下载jpcap包,有两个文件,分别是jpcap.dll和jpcap.jar,这两个文件分别放到JAVA安装路径/jre1.6.0_06/bin和JAVA安装路径/jre1.6.0_06/lib/ext下。这种方法注意可能需要自己配置程序的java.library.path.
最后,在你的IDE中导入外部jar。
运行中可能会遇到的错误:
no dependence libray
原因:很有可能没有安装winpcap
java.lang.UnsatisfiedLinkError:no jpcap in java.library.path
原因:java在library path 中找不到 jpcap.dll
解决:把jpcap.dll复制到system32
或者是在run配置里加入-Djava.library.path=(jpcap.dll所放置的地方)
记录一下,以防将来忘记。
以上。
参考:http://blog.csdn.net/pdcxs007/article/details/48691009
http://blog.csdn.net/loverooney/article/details/38543191
http://ohyeahbbs.blog.51cto.com/1775490/592573
http://www.bianceng.cn/Programming/Java/200705/1834.htm
http://www.cnblogs.com/acmy/archive/2012/02/04/2337955.html
http://blog.csdn.net/fykhlp/article/details/6159195
记录jpcap在Ubuntu&Window下的配置过程的更多相关文章
- 记录一下emacs在window下的配置过程
今天重装WIN7 64位新系统,装完发现emacs无法加载以前的插件了.网上搜一下才记起来,emacs默认读取的配置文件在c盘,在这个原始配置文件中还需要添加一些路径转换的语句才能转到用户自己的配置文 ...
- Tomcat7.0.22在Windows下详细配置过程
Tomcat7.0.22在Windows下详细配置过程 一.JDK1.7安装 1.下载jdk,下载地址:http://www.oracle.com/technetwork/java/javase/do ...
- Ubuntu Linux下如何配置Android开发环境
下载和安装Win7系统Android开发环境中讲了怎样在Win7系统中安装Android开发环境,那么怎样在Linux系统中配置Android开发环境呢?本篇文章就将演示如何使用Eclipse.And ...
- window下xampp配置多端口、多站点步骤
好些日子没整理知识了,许多新东西不整理出来时间一长就淡忘了.看来以后得继续坚持整理. 配置XAMPP多端口.多站点如下步骤: 多端口: (一个域名下同时配置多个端口,从而达到访问不同程序) 效果例如: ...
- Ubuntu环境下手动配置zookeeper
配置zookeeper 注意:因为是单机伪分布式配置,故同一机器上有3个server zookeeper文件格式如下 home---zookeeper---server0---zookeeper | ...
- 【python3】window下 vscode 配置 python3开发环境
本文以python3.7 为例 一 下载python3 url : https://www.python.org/downloads/windows/ 提示: 安装过程中.记得勾选 添加环境变量 二 ...
- Ubuntu 15 下 Qt 配置mysql链接及基本操作
序 最近需要在Linux下做一个unix网络编程项目,选择了Ubuntu 最新版本15.04 : 开发环境:Qt 5 数据库: MySQL 安装Qt 和 MySQL 简要介绍一下软件的安装! 安装Qt ...
- LinuxMint(同Ubuntu)下安装配置NFS设置共享目录
假设有两台机器, 机器A:10.68.93.2 机器B:10.68.93.3 现在需要将机器A上的/opt/nfsshare共享出去,然后挂载到机器B的/nfsshare目录下. 1. 在机器A上: ...
- Ubuntu环境下手动配置ElasticSearch0.90.5
1 下载elasticsearch-0.90.5 2 修改配置(可选) 修改内存:(可选) bin/elasticsearch.in.sh中: ES_MIN_MEM ES_MAX_MEM 修改搜索引擎 ...
随机推荐
- 汇总前端最最常用的JS代码片段
html5选择器 //参数均接收一个合法的css选择器 element = document.querySelector('.foo,.bar');//返回带有foo或者bar样式类的首个元素 ele ...
- 如何将eclipse里的项目发布到github
首先,给eclipse安装上EGit 在“Help > Install new software”中添加 http://download.eclipse.org/egit/updates 两个都 ...
- Android Context作用
Context 用于访问全局信息的接口 App的资源: strings, drawable资源等等 工程代码:LearnContext.zip ---------------------------- ...
- python学习之 -mysql 连接和db_config配置
最近学习python,记录下自己写学习python的代码和心得,自己写了一个使用python mysql 的查询语句和做的一个db_config.py 配置信息. 1.db_config.py 配置文 ...
- frame,bounds,center-三者的含义
frame与bounds的区别比较 frame,bounds,center-三者的含义 偶然觉的,这三个属性有时候定位的时候,需要用.于是就来搞清楚,到底frame,bounds,center 这三个 ...
- Java中遍历Map的几种方法
转自: http://blog.csdn.net/wzb56/article/details/7864911 方法分为两类: 一类是基于map的Entry:map.entrySet(); 一类是基 ...
- ubuntu 解压rar
Ubuntu下解压rar文件的方法 一般通过默认安装的ubuntu是不能解压rar文件的,只有在安装了rar解压工具之后,才可以解压.其实在ubuntu下安装rar解压工具是非常简单的,只需要两个步骤 ...
- [BZOJ 1033] [ZJOI2008] 杀蚂蚁antbuster 【模拟!】
题目链接: BZOJ - 1033 题目分析 模拟!纯粹按照题目描述模拟! 这是一道喜闻乐见的经典模拟题! 我一共写了2遍,Debug 历时2天的所有晚自习 ... 时间超过 8h ... 我真是太弱 ...
- 一个用UpdateLayeredWindow实现窗体半透明的delphi的代码
http://www.pudn.com/downloads171/sourcecode/windows/detail791686.html unit Unit1; interface uses ...
- 使用SetWindowPos API函数移动窗口后,还需修改Delphi的属性值,以备下次使用,否则就会出问题(不是API不起作用,而是使用了错误的坐标值)
单独改变坐标的代码如下,可不断左移: procedure TForm1.Button1Click(Sender: TObject); begin SetWindowPos(panel1.Handle, ...