title: jnetpcap Getting java.lang.IllegalArgumentException
body: <p>My console output is --</p>
  
  <pre><code>Exception in thread "main" java.lang.IllegalArgumentException: size of array must be MAX_ID_COUNT size
  at org.jnetpcap.packet.JScanner.loadScanners(Native Method)
  at org.jnetpcap.packet.JScanner.reloadAll(JScanner.java:376)
  at org.jnetpcap.packet.JScanner.&lt;init&gt;(JScanner.java:313)
  at org.jnetpcap.packet.JScanner.&lt;init&gt;(JScanner.java:293)
  at org.jnetpcap.packet.JPacket.getDefaultScanner(JPacket.java:621)
  at org.jnetpcap.packet.JPacket.scan(JPacket.java:1094)
  at org.jnetpcap.packet.JMemoryPacket.&lt;init&gt;(JMemoryPacket.java:387)
  at org.jnetpcap.packet.JMemoryPacket.&lt;init&gt;(JMemoryPacket.java:440)
  at ClassicPcapExample.main(ClassicPcapExample.java:128)
  </code></pre>
  
  <p>Code:</p>
  
  <pre><code>import java.util.ArrayList;
  import java.util.Date;
  import java.util.List;
  
  import org.jnetpcap.Pcap;
  import org.jnetpcap.PcapIf;
  import org.jnetpcap.packet.JMemoryPacket;  
  import org.jnetpcap.packet.JPacket;
  import org.jnetpcap.packet.PcapPacket;
  import org.jnetpcap.packet.PcapPacketHandler;
  import org.jnetpcap.protocol.JProtocol; 
  import org.jnetpcap.protocol.lan.Ethernet;
  import org.jnetpcap.protocol.network.Ip4;
  import org.jnetpcap.protocol.tcpip.Tcp;
  
  public class ClassicPcapExample{
  
  /**
   * Main startup method
   * 
   * @param args
   *          ignored
   */
  public static void main(String[] args) {
      List&lt;PcapIf&gt; alldevs = new ArrayList&lt;PcapIf&gt;(); // Will be filled with NICs
      StringBuilder errbuf = new StringBuilder(); // For any error msgs
  
      /***************************************************************************
       * First get a list of devices on this system
       **************************************************************************/
      int r = Pcap.findAllDevs(alldevs, errbuf);
      if (r == Pcap.NOT_OK || alldevs.isEmpty()) {
          System.err.printf("Can't read list of devices, error is %s", errbuf
              .toString());
          return;
      }
  
      System.out.println("Network devices found:");
  
      int i = 0;
      for (PcapIf device : alldevs) {
          String description =
              (device.getDescription() != null) ? device.getDescription()
                  : "No description available";
          System.out.printf("#%d: %s [%s]\n", i++, device.getName(), description);
      }
  
      PcapIf device = alldevs.get(0); // We know we have atleast 1 device
      System.out
          .printf("\nChoosing '%s' on your behalf:\n",
              (device.getDescription() != null) ? device.getDescription()
                  : device.getName());
  
      /***************************************************************************
       * Second we open up the selected device
       **************************************************************************/
      int snaplen = 64 * 1024;           // Capture all packets, no truncation
      int flags = Pcap.MODE_PROMISCUOUS; // capture all packets
      int timeout = 10 * 1000;           // 10 seconds in milliseconds
      Pcap pcap =
          Pcap.openLive(device.getName(), snaplen, flags, timeout, errbuf);
  
      if (pcap == null) {
          System.err.printf("Error while opening device for capture: "
              + errbuf.toString());
          return;
      }
  
      /***************************************************************************
       * Third we create a packet handler which will receive packets from the
       * libpcap loop.
       **************************************************************************/
      PcapPacketHandler&lt;String&gt; jpacketHandler = new PcapPacketHandler&lt;String&gt;() {
  
          public void nextPacket(PcapPacket packet, String user) {
  
              System.out.printf("Received packet at %s caplen=%-4d len=%-4d %s\n",
                  new Date(packet.getCaptureHeader().timestampInMillis()), 
                  packet.getCaptureHeader().caplen(),  // Length actually captured
                  packet.getCaptureHeader().wirelen(), // Original length 
                  user                                 // User supplied object
                  );
          }
      };
  
      /***************************************************************************
       * Fourth we enter the loop and tell it to capture 10 packets. The loop
       * method does a mapping of pcap.datalink() DLT value to JProtocol ID, which
       * is needed by JScanner. The scanner scans the packet buffer and decodes
       * the headers. The mapping is done automatically, although a variation on
       * the loop method exists that allows the programmer to specify exactly
       * which protocol ID to use as the data link type for this pcap interface.
       **************************************************************************/
      //pcap.loop(5, jpacketHandler, "jNetPcap rocks!");//GETTING AN ERROR AT THIS LINE!! 
  
      pcap.close();
  
  
  }
  }
  </code></pre>