众所周知,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. PHP-HTML重要知识点笔记

    1.用frameset.frame和iframe还实现多窗口 2.在图片上利用映射距离usemap来实现按钮跳转.------第8尾集 3.表单必须要有name和value,因为抓包的时候,可发现必须 ...

  2. java 知识结构

    JAVA基础阶段 阶段 技术名称 技术内容 T线 JavaSE JAVA 开发基础知识 | Eclipse 开发环境 | JavaSE 7.0 API | JavaSE 8.0新特性 | 多线程技术 ...

  3. 单例-b

    这个比较老了,是mrc 里面的 此例以模仿Apple官方文档的单例写出来的.但是一直有一个非常不明白的地方,就是alloc与allocWithZone:的重载中,为什么要return [[self c ...

  4. 安装 mysql server

    三个月前向公司申请了一台服务器单独给我用,作为部署我写的自动发布工具的服务器.同事不久前在我这台服务器上装了个数据库,今天上去查了一下,用不了,只有information_schema和test两个数 ...

  5. hadoop job执行完的统计信息

    Total committed heap usage (bytes)= Physical memory (bytes) snapshot= Virtual memory (bytes) snapsho ...

  6. PLSQL 看连接数据库的用户

    1. PLSQL选用SYSDBA登录,用户sys,密码xxx 2. 登录后,点tools菜单有sessions子菜单, 3.点击sessions子菜单,可以看到连接用户

  7. [UOJ Round#4 A] [#51] 元旦三侠的游戏 【容斥 + 递推】

    题目链接:UOJ - 51 据说这题与 CF 39E 类似. 题目分析 一看题目描述,啊,博弈论,不会!等待爆零吧... 这时,XCJ神犇拯救了我,他说,这题可以直接搜啊. 注意!是用记忆化搜索,状态 ...

  8. 整合apache+tomcat+keepalived实现高可用tomcat集群

    Apache是一个强大的Web服务器在处理静态页面.处理大量网络客户请求.支持服务的种类以及可配置方面都有优势,高速并且强壮.但是没有JSP/Servlet的解析能力.整合Apache和Tomcat可 ...

  9. 【转】Usage of sendBroadcast()

    原文网址:http://stackoverflow.com/questions/4883079/usage-of-sendbroadcast sendBroadcast() - Should it b ...

  10. C数组的相关知识

    数组的定义:具有相同数据类型的集合.在内存中开辟连续的存贮空间,从上往下,依次存储 补充:内存是以字节位单位的存储空间,内存中的每一个字节都唯一对应一个编号.这个编号就是地址.只要是存在内存中的数据都 ...