众所周知,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下的配置过程的更多相关文章

  1. 记录一下emacs在window下的配置过程

    今天重装WIN7 64位新系统,装完发现emacs无法加载以前的插件了.网上搜一下才记起来,emacs默认读取的配置文件在c盘,在这个原始配置文件中还需要添加一些路径转换的语句才能转到用户自己的配置文 ...

  2. Tomcat7.0.22在Windows下详细配置过程

    Tomcat7.0.22在Windows下详细配置过程 一.JDK1.7安装 1.下载jdk,下载地址:http://www.oracle.com/technetwork/java/javase/do ...

  3. Ubuntu Linux下如何配置Android开发环境

    下载和安装Win7系统Android开发环境中讲了怎样在Win7系统中安装Android开发环境,那么怎样在Linux系统中配置Android开发环境呢?本篇文章就将演示如何使用Eclipse.And ...

  4. window下xampp配置多端口、多站点步骤

    好些日子没整理知识了,许多新东西不整理出来时间一长就淡忘了.看来以后得继续坚持整理. 配置XAMPP多端口.多站点如下步骤: 多端口: (一个域名下同时配置多个端口,从而达到访问不同程序) 效果例如: ...

  5. Ubuntu环境下手动配置zookeeper

    配置zookeeper 注意:因为是单机伪分布式配置,故同一机器上有3个server zookeeper文件格式如下 home---zookeeper---server0---zookeeper | ...

  6. 【python3】window下 vscode 配置 python3开发环境

    本文以python3.7 为例 一 下载python3 url : https://www.python.org/downloads/windows/ 提示: 安装过程中.记得勾选  添加环境变量 二 ...

  7. Ubuntu 15 下 Qt 配置mysql链接及基本操作

    序 最近需要在Linux下做一个unix网络编程项目,选择了Ubuntu 最新版本15.04 : 开发环境:Qt 5 数据库: MySQL 安装Qt 和 MySQL 简要介绍一下软件的安装! 安装Qt ...

  8. LinuxMint(同Ubuntu)下安装配置NFS设置共享目录

    假设有两台机器, 机器A:10.68.93.2 机器B:10.68.93.3 现在需要将机器A上的/opt/nfsshare共享出去,然后挂载到机器B的/nfsshare目录下. 1. 在机器A上: ...

  9. Ubuntu环境下手动配置ElasticSearch0.90.5

    1 下载elasticsearch-0.90.5 2 修改配置(可选) 修改内存:(可选) bin/elasticsearch.in.sh中: ES_MIN_MEM ES_MAX_MEM 修改搜索引擎 ...

随机推荐

  1. phpcms 如何获取文章

    请求地址http://127.0.0.1/phpcms/index.php?m=content&c=index&a=show&catid=6&id=8 先来判断地址对应 ...

  2. SharePoint 2013 弹窗效果之URL打开方式(一)

    在SharePoint中想做一个弹出效果其实很简单,仅仅在js中使用SharePoint Modal Dialog, 以下做一个简单的例子:很多情况下我们会通过linkButton弹出一个详细页面,那 ...

  3. Egret 双端接入爱贝支付遇到的问题

    首先要为 egret 工程引入第三方库: Egret 接第三方库:http://edn.egret.com/cn/index.php?g=&m=article&a=index& ...

  4. Egret 纹理、计时器

    1. 九宫切 典型例子就是圆角矩形的拉伸问题. 先去P一张绿色的圆角矩形. private createGameScene():void { var box:egret.Bitmap = new eg ...

  5. 最新选择Godaddy主机方案美国数据中心教程指导

    随着Godaddy官方管理层的变动之后,主营重心已经从当初的域名开始转向到域名和主机产品上.这点我们从其发布域名优惠信息的频率也可以看到,而且我们可以看到常年的主机半价优惠,以及针对主机销售年付方案赠 ...

  6. [BZOJ 2350] [Poi2011] Party 【Special】

    题目链接: BZOJ - 2350 题目分析 因为存在一个 2/3 n 大小的团,所以不在这个团中的点最多 1/3 n 个. 牺牲一些团内的点,每次让一个团内的点与一个不在团内的点抵消删除,最多牺牲 ...

  7. Inna and Binary Logic

    Codeforces Round #234 (Div. 2) E:http://codeforces.com/problemset/problem/400/E 题意:给你n个数,然后每相邻的两个数可以 ...

  8. ajax异步请求不能刷新数据的问题

    搞了两三天的问题,今天解决了.总结下: function reportGrpChange(cuid, title){ document.getElementById('reportFrameDiv') ...

  9. github 托管代码两分钟教程【转载,亲测可行】

    http://blog.csdn.net/duxinfeng2010/article/details/8654690 出自以上地址 本篇文章介绍的是如何将工程代码托管到上面:如果你还没注册GitHub ...

  10. STL中的Traits编程技法

    最近在看读<STL源码剖析>,看到Traits编程技法这节时,不禁感慨STL源码作者的创新能力.那么什么是Traits编程技法呢?且听我娓娓道来: 我们知道容器的许多操作都是通过迭代器展开 ...