众所周知,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. 如何将eclipse里的项目发布到github

    首先,给eclipse安装上EGit 在“Help > Install new software”中添加 http://download.eclipse.org/egit/updates 两个都 ...

  2. dede操作成功信息提示修改

    函数修改 include/common.func.php 文件 function ShowMsg()函数

  3. JDK环境变量配置贺Tomcat环境搭建

    一.安装JDK JDK (Java Develpmet kit) Java开发环境(工具包和运行环境jre) 是Java开发的核心,包括:编译程序的命令 javac 运行程序java命令 he jav ...

  4. fragment 学习

    fragment需要id是必须属性 <fragment        android:id="@+id/frg1"        android:name="com ...

  5. Oracle问题解决(远程登录失败)

    远程机: 安装 Oracle 的计算机: 本地机: 访问远程机 Oracle 的计算机. 一.问题描述 远程机安装 Oracle 成功. 本地机配置 InstantClient 后, PLSql De ...

  6. [HDOJ 1171] Big Event in HDU 【完全背包】

    题目链接:HDOJ - 1171 题目大意 有 n 种物品,每种物品有一个大小和数量.要求将所有的物品分成两部分,使两部分的总大小尽量接近. 题目分析 令 Sum 为所有物品的大小总和.那么就是用给定 ...

  7. Cash Machine(多重背包)

    Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 24067   Accepted: 8414 Description A Ba ...

  8. (转载)HTML标签<br><br/>的区别在哪里?

    (转载)http://zhidao.baidu.com/question/259205863.html HTML标签<br><br/>的区别在哪里? 如果一样为什么还要分2个标 ...

  9. 【有源汇上下界费用流】BZOJ 3876 [Ahoi2014]支线剧情

    题目链接: http://www.lydsy.com:808/JudgeOnline/problem.php?id=3876 题目大意: 给定一张拓扑图(有向无环图),每条边有边权,每次只能从第一个点 ...

  10. call, apply && bind, currying

    简要概括: apply(): 将函数作为指定对象的方法来调用,传递给它的是指定的参数数组 ——function.apply(thisobj, args) 或者 function.apply(thiso ...