Java.lang.NoSuchMethodError: setRoutingOption

Signaler
Messages postés
1
Date d'inscription
samedi 17 avril 2010
Statut
Membre
Dernière intervention
20 avril 2010
-
 mamithierry -
Bonjour,
SVP,pouvez m'indiquer la solution pour cette
exception?

Exception in thread "main" java.lang.NoSuchMethodError: setRoutingOption
at jpcap.JpcapCaptor.nativeOpenLive(Native Method)
at jpcap.JpcapCaptor.openDevice(JpcapCaptor.java:6o

5 réponses

quelqu'un pourrai me donner une réponse , j'ai le même problème merci !
Salut,

Il faudrait un peu plus d'informations pour pouvoir t'aider, parce que là c'est pas simple. Le code serait déjà pas mal.

Ensuite de ce que je peux voir, bon beh déjà t'appelle une méthode qui n'existe pas, jusque la on peut m’appeler Captain Obvious ^^.

A priori ça devrait pas se produire si t'utilise un IDE (Netbeans, Eclipse, etc.) puisque ça te bloquerai la compilation.
Donc, soit JpcapCaptor (je connais pas) fonctionne de la même manière qu'une app JSF et dans ce cas là tu dois avoir un fichier de conf quelque part dans lequel il te faudra écrire tes routes vers tes classes.
Soit tu fait l'appel à ta méthode en utilisant un loader de classe (un truc du genre loader.load("ma classe").getMethod("ma methode")) et dans ce cas là ton appel vers ta méthode est faux.

Je peux pas plus t'aider sans plus d'infos.

++
OK enfaîte je suis entrain d’implémenter un sniffer de réseaux, donc j'utilise jpcap et winpcap, j'ai deja jpcap.dll et jpcap.jar au bon endroit.
--> je dois pouvoir afficher les différentes interfaces réseaux(ce qui marche sans problème), mais lorsque j'essaye de faire "openDevice" j'ai ce msg d'erreur.

voici un extrait de mon code

jpcap.NetworkInterface[] devices = jpcap.JpcapCaptor.getDeviceList();
 JpcapCaptor cap = JpcapCaptor.openDevice(devices[1], 65535, false, 20);//c'est la qu'il ya un problème


msg d'erreur:
java.lang.NoSuchMethodError: setRoutingOption
at jpcap.JpcapCaptor.nativeOpenLive(Native Method)
at jpcap.JpcapCaptor.openDevice(JpcapCaptor.java:68)...

merci d'avance
Tiens en fouillant un peu dans le code de JpCap j'ai trouvé un exemple de code. Eux pour sniffer ils utilisent la méthode open tout simplement, fin je te donne le lien vers le sourceforge, et l'exemple.

Code Source

// $Id: Sniffer.java,v 1.1 2002/02/18 21:49:49 pcharles Exp $

/***************************************************************************
 * Copyright (C) 2001, Rex Tsai <chihchun@kalug.linux.org.tw>              *
 * Distributed under the Mozilla Public License                            *
 *   http://www.mozilla.org/NPL/MPL-1.1.txt                                *
 ***************************************************************************/

package net.sourceforge.jpcap.tutorial.sniffer;

import net.sourceforge.jpcap.capture.*;
import net.sourceforge.jpcap.net.*;


/**
 * jpcap Tutorial - Sniffer example
 *
 * @author Rex Tsai
 * @version $Revision: 1.1 $
 * @lastModifiedBy $Author: pcharles $
 * @lastModifiedAt $Date: 2002/02/18 21:49:49 $
 */
public class Sniffer
{
  private static final int INFINITE = -1;
  private static final int PACKET_COUNT = INFINITE; 
  /*
    private static final String HOST = "203.239.110.20";
    private static final String FILTER = 
      "host " + HOST + " and proto TCP and port 23";
  */

  private static final String FILTER = 
    // "port 23";
    "";

  public static void main(String[] args) {
    try {
      if(args.length == 1){
Sniffer sniffer = new Sniffer(args[0]);
      } else {
System.out.println("Usage: java Sniffer [device name]");
System.out.println("Available network devices on your machine:");
String[] devs = PacketCapture.lookupDevices();
for(int i = 0; i < devs.length ; i++)
  System.out.println("\t" + devs[i]);
      }
    } catch(Exception e) {
      e.printStackTrace();
    }
  }

  public Sniffer(String device) throws Exception {
    // Initialize jpcap
    PacketCapture pcap = new PacketCapture();
    System.out.println("Using device '" + device + "'");
    pcap.open(device, true);
    pcap.setFilter(FILTER, true);
    pcap.addPacketListener(new PacketHandler());

    System.out.println("Capturing packets...");
    pcap.capture(PACKET_COUNT);
  }
}


class PacketHandler implements PacketListener 
{
  public void packetArrived(Packet packet) {
    try {
      // only handle TCP packets

      if(packet instanceof TCPPacket) {
TCPPacket tcpPacket = (TCPPacket)packet;
byte[] data = tcpPacket.getTCPData();
    
String srcHost = tcpPacket.getSourceAddress();
String dstHost = tcpPacket.getDestinationAddress();
String isoData = new String(data, "ISO-8859-1");

System.out.println(srcHost+" -> " + dstHost + ": " + isoData);
      }
    } catch( Exception e ) {
      e.printStackTrace();
    }
  }
}

merci
je vais essayer ça.