rahuldeshmaane
rahuldeshmaane

Reputation: 94

Please help me sort out this Exception In JAVA

I am getting following exception. Anyone please help me solve this problem. I am Executing it in netbeans 8 IDE. jdk 7 (32 bit).I'm trying to display the console output in a TextArea.

errors:

Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: Uncompilable source code - unreported exception java.lang.Exception; must be caught or declared to be thrown
    at NewJFrame.captureActionPerformed(NewJFrame.java:127)
    at NewJFrame.access$000(NewJFrame.java:22)
    at NewJFrame$1.actionPerformed(NewJFrame.java:66)
    at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
    at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
    at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
    at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
    at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
    at java.awt.Component.processMouseEvent(Component.java:6505)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3320)
    at java.awt.Component.processEvent(Component.java:6270)
    at java.awt.Container.processEvent(Container.java:2229)
    at java.awt.Component.dispatchEventImpl(Component.java:4861)
    at java.awt.Container.dispatchEventImpl(Container.java:2287)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4492)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4422)
    at java.awt.Container.dispatchEventImpl(Container.java:2273)
    at java.awt.Window.dispatchEventImpl(Window.java:2719)
    at java.awt.Component.dispatchEvent(Component.java:4687)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
    at java.awt.EventQueue.access$200(EventQueue.java:103)
    at java.awt.EventQueue$3.run(EventQueue.java:694)
    at java.awt.EventQueue$3.run(EventQueue.java:692)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
    at java.awt.EventQueue$4.run(EventQueue.java:708)
    at java.awt.EventQueue$4.run(EventQueue.java:706)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
BUILD SUCCESSFUL (total time: 12 seconds)

SOURCE CODE:

import jpcap.*;
import jpcap.NetworkInterface;
import java.io.IOException;
import jpcap.packet.DatalinkPacket;
import jpcap.packet.EthernetPacket;
import jpcap.packet.ICMPPacket;
import jpcap.packet.IPPacket;
import jpcap.packet.Packet;
import jpcap.packet.TCPPacket;
import jpcap.packet.UDPPacket;


/**
 *
 * @author Rahul
 */
public class NewJFrame extends javax.swing.JFrame implements PacketReceiver {
static NetworkInterface [] devices;
    static int j = 0;
    int interface_index;
    String protocoll[] = {"HOPOPT", "ICMP", "IGMP", "GGP", "IPV4", "ST", "TCP", "CBT", "EGP", "IGP", "BBN", "NV2", "PUP", "ARGUS", "EMCON", "XNET", "CHAOS", "UDP", "mux"};

    /**
     * Creates new form NewJFrame
     */
    public NewJFrame() {
        initComponents();
         devices = JpcapCaptor.getDeviceList();

       for (int i = 0; i < devices.length; i++) 
       {
            result.append(i + " :" + devices[i].name + "(" + devices[i].description + ")\n");

        }

    }

    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
    private void initComponents() {

        capture = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jScrollPane1 = new javax.swing.JScrollPane();
        result = new javax.swing.JTextArea();
        select = new javax.swing.JButton();
        indexx = new javax.swing.JTextField();
        jLabel1 = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setTitle("Packet Analyzer");

        capture.setText("CAPTURE");
        capture.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                captureActionPerformed(evt);
            }
        });

        jButton2.setText("STOP");

        result.setColumns(20);
        result.setRows(5);
        jScrollPane1.setViewportView(result);

        select.setText("Select");
        select.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                selectActionPerformed(evt);
            }
        });

        jLabel1.setText("Enter device index:");

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addGap(52, 52, 52)
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 596, Short.MAX_VALUE))
                    .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                        .addGap(88, 88, 88)
                        .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                            .addComponent(jLabel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(indexx))
                        .addGap(18, 18, 18)
                        .addComponent(select)
                        .addGap(113, 113, 113)
                        .addComponent(capture)
                        .addGap(74, 74, 74)
                        .addComponent(jButton2)))
                .addGap(58, 58, 58))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addGap(26, 26, 26)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 164, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 32, Short.MAX_VALUE)
                .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 22, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(capture)
                    .addComponent(jButton2)
                    .addComponent(select)
                    .addComponent(indexx, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(41, 41, 41))
        );

        pack();
    }// </editor-fold>                        

    private void captureActionPerformed(java.awt.event.ActionEvent evt) {                                        
    capturepacket();    

    }                                       

    public void capturepacket() throws Exception    {
        JpcapCaptor jpcap = JpcapCaptor.openDevice(devices[2], 2000, true, 20);

        jpcap.loopPacket(-1, new NewJFrame());

    }
    private void selectActionPerformed(java.awt.event.ActionEvent evt) {                                       
       interface_index = Integer.parseInt(indexx.getText());
       result.setText(" ");
    }                                      

    public void receivePacket(Packet packet) 
    {
        result.append(packet + "\n");
        result.append("this is packet " + j + " :" + "\n");
        j++;

        IPPacket tpt=(IPPacket)packet;
        if (packet != null) 
        {
         int ppp=tpt.protocol;
         String proto=protocoll[ppp];
         result.append("about the ip packet in network layer : \n");
         result.append("\n******************************************************************");
         if(tpt.dont_frag)
         {
          result.append("\ndft bi is set. packet will not be fragmented \n");
         }
         else
         {
          result.append("\ndft bi is not set. packet will  be fragmented \n");
         }
         result.append("\n \n destination ip is :"+tpt.dst_ip);
         result.append("\n\n this is source ip :"+tpt.src_ip);
         result.append("\n\n this is hop limit :"+tpt.hop_limit);
         result.append("\n \n this is identification field  :"+tpt.ident);
         result.append("\n \npacket length :"+tpt.length);
         result.append("\n\n packet priority  :"+(int)tpt.priority);
         result.append("\ntype of service field"+tpt.rsv_tos);
         if(tpt.r_flag)
         {
          result.append("\nreleiable transmission");
         }
         else
         {
          result.append("\nnot reliable");
         }
         result.append("\nprotocol version is : "+(int)tpt.version);
         result.append("\nflow label field"+tpt.flow_label);

         result.append("\n**********************************************************************");

         result.append("\ndatalink level analysis");
         result.append("\n********************************************************************");
         DatalinkPacket dp = packet.datalink;


            EthernetPacket ept=(EthernetPacket)dp;
            result.append("\nthis is destination mac address :"+ept.getDestinationAddress());
            result.append("\n this is source mac address"+ept.getSourceAddress());



System.out.println("*********************************************************************");
result.append("\nthis is about type of packet");
result.append("\n******************************************************************************");

                if (proto.equals(("TCP"))) {
                    result.append(" /n this is TCP packet");
                    TCPPacket tp = (TCPPacket) packet;
                    result.append("\nthis is destination port of tcp :" + tp.dst_port);
                    if (tp.ack) {
                        result.append("\n" + "this is an acknowledgement");
                    } else {
                        result.append("\nthis is not an acknowledgment packet");
                    }

                    if (tp.rst) {
                        result.append("\nreset connection ");
                    }
                    result.append(" \n protocol version is :" + tp.version);
                    result.append("\n this is destination ip " + tp.dst_ip);
                    result.append("\nthis is source ip"+tp.src_ip);
                   if(tp.fin){
                       result.append("\nsender does not have more data to transfer");
                   }
                    if(tp.syn){
                        result.append("\n request for connection");
                    }

                }else if(proto.equals("ICMP")){
                    ICMPPacket ipc=(ICMPPacket)packet;
             // java.net.InetAddress[] routers=ipc.router_ip;
              //for(int t=0;t
                //  System.out.println("\n"+routers[t]);
             // }
              result.append(" \n this is alive time :"+ipc.alive_time);
              result.append("\n number of advertised address :"+(int)ipc.addr_num);
              result.append("mtu of the packet is :"+(int)ipc.mtu);
              result.append("subnet mask :"+ipc.subnetmask);
              result.append("\n source ip :"+ipc.src_ip);
              result.append("\n destination ip:"+ipc.dst_ip);
              result.append("\n check sum :"+ipc.checksum);
              result.append("\n icmp type :"+ipc.type);
              result.append("");


                }else if(proto.equals("UDP")){
                    UDPPacket pac=(UDPPacket)packet;
                    result.append("\nthis is udp packet \n");
                    result.append("\nthis is source port :"+pac.src_port);
                    result.append("\nthis is destination port :"+pac.dst_port);

                }

              result.append("\n******************************************************");

            }




        }


    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        /* Set the Nimbus look and feel */
        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
        /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.
         * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html 
         */
        try {
            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
                if ("Nimbus".equals(info.getName())) {
                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
                    break;
                }
            }
        } catch (ClassNotFoundException ex) {
            java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (InstantiationException ex) {
            java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (IllegalAccessException ex) {
            java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
            java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
        }
        //</editor-fold>

        /* Create and display the form */
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new NewJFrame().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify                     
    private javax.swing.JButton capture;
    private javax.swing.JTextField indexx;
    private javax.swing.JButton jButton2;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JScrollPane jScrollPane1;
    public static javax.swing.JTextArea result;
    private javax.swing.JButton select;
    // End of variables declaration                   
}

Upvotes: 0

Views: 411

Answers (3)

Ivaylo Strandjev
Ivaylo Strandjev

Reputation: 70929

In this function:

private void captureActionPerformed(java.awt.event.ActionEvent evt) {                                        
  capturepacket();    
}  

You call capturepacket();. However this function may throw Exception and thus for your code to compile you will either have to surround the call with a try-catch block or declare captureActionPerformed to throw Exception in turn. Keep in mind you will then need to further manage this exception until eventually you catch it somewhere.

Upvotes: 0

Bucket
Bucket

Reputation: 7521

You need to catch an exception thrown around your captureActionPerformed call. Use the try-catch structure:

public void actionPerformed(java.awt.event.ActionEvent evt) {
    try {
        captureActionPerformed(evt);
    } catch (Exception e) {
        e.printStackTrace();
        //and other clean-up tasks
    }
}

Just be aware of actions that throw exceptions and be prepared for your methods to catch them.

Upvotes: 0

T.J. Crowder
T.J. Crowder

Reputation: 1074238

The error message is fairly clear:

unreported exception java.lang.Exception; must be caught or declared to be thrown

You're calling a method that throws a checked exception, Exception, but you're calling it from code that doesn't catch it, and doesn't report that it (the calling code) throws it. See this tutorial on the Oracle Java site for details, but basically here's a simple case:

Suppose you need to call the method foo and it's declared like this:

void foo()
throws Exception {
    // ...
}

That says that the code in foo may throw the exception Exception. Now, suppose we have this method bar:

void bar() {
    this.foo(); // Problem
}

bar doesn't say it throws Exception, but it calls foo without wrapping that call in a try/catch that catches the exception that foo says it may throw. bar either needs to catch the exception and handle it:

void bar() {
    try {
        this.foo();
    }
    catch (Exception e) {
        // Handle the exception appropriately
    }
}

...or declare that bar may throw the exception:

void bar()
throws Exception {
    this.foo(); // Problem
}

Upvotes: 1

Related Questions