gpt4 book ai didi

java - 请帮我解决这个JAVA异常

转载 作者:行者123 更新时间:2023-12-01 13:12:10 35 4
gpt4 key购买 nike

我遇到以下异常。任何人请帮我解决这个问题。我正在 netbeans 8 IDE 中执行它。 jdk 7(32 位)。我正在尝试在 TextArea 中显示控制台输出。

错误:

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)

源代码:

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
}

最佳答案

错误消息相当清楚:

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

您正在调用一个引发已检查异常的方法,Exception,但您从未捕获该异常的代码中调用它,并且不报告该异常(调用代码)抛出它。请参阅this tutorial有关详细信息,请访问 Oracle Java 网站,但基本上这是一个简单的案例:

假设您需要调用方法 foo 并且它的声明如下:

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

这表示foo中的代码可能会抛出异常Exception。现在,假设我们有这个方法 bar:

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

bar 并没有说它抛出 Exception,但它调用 foo 而不将该调用包装在 try/catch 捕获 foo 表示它可能抛出的异常。 bar 要么需要捕获异常并处理它:

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

...或者声明 bar 可能会抛出异常:

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

关于java - 请帮我解决这个JAVA异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22763570/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com