[英]Array index out of bounds exception
我是Java的新手,並獲得了這段代碼,沒有說明就可以弄清楚。 我正在獲取基礎知識,但不確定為什么會出錯。 我越來越
java.lang.arrayindexoutofboundsexception:2
at prealert.listener.<init>.(Listener.Java:26)
at prealert.listener.main(Listener.Java:40)
在此先感謝您的幫助。
package prealert;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
import jpcap.JpcapCaptor;
import jpcap.NetworkInterface;
public class Listener {
private NetworkInterface[] devices;
private NetworkInterface deviceName;
private Reciever reciever;
private JpcapCaptor jpcap;
public static Logger log;
public Listener() {
PropertyConfigurator.configure("log4j.properties");
log = Logger.getRootLogger();
log.debug("Log4j has been initialized");
devices = JpcapCaptor.getDeviceList();
for (int i = 0; i < devices.length; i++) {
log.info(devices[i].description);
}
deviceName = devices[2];
reciever = new Reciever();
try {
jpcap = JpcapCaptor.openDevice(deviceName, 2000, true, 100);
} catch (Exception e) {
log.error("Error with JPcapCreation", e);
}
reciever.jpcap = jpcap;
reciever.start();
new SetBoard(SetBoard.DEFAULT).start();
}
public static void main(String args[]) {
try {
new Listener();
} catch (Exception e) {
log.error("ERROR IN THE MAIN METHOD OF LISTENER!", e);
}
}
}
看一眼
deviceName = devices[0];
如果沒有設備,則將失敗,並顯示異常。
我假設錯誤的行是: deviceName = devices[0];
這將因為devices = JpcapCaptor.getDeviceList();
返回一個沒有元素的數組。
假設這是真的,您需要弄清楚為什么數組為空(因為您假設它將至少有一個元素),或者應對它不包含任何元素的事實並添加if(devices.length> 0 ),然后再使用它。
我認為問題出在中間的for循環中。 盡管代碼本身看起來不錯,但您可能需要首先檢查設備中是否包含某些內容。
調用devices [2]時,必須確保數組中至少有3個元素,也許getDeviceList()返回的數組大小為0。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.