我正在NetBeans
中为SFTP
编写程序。
我的代码的某些部分:
com.jcraft.jsch.Session sessionTarget = null;
com.jcraft.jsch.ChannelSftp channelTarget = null;
try {
sessionTarget = jsch.getSession(backupUser, backupHost, backupPort);
sessionTarget.setPassword(backupPassword);
sessionTarget.setConfig("StrictHostKeyChecking", "no");
sessionTarget.connect();
channelTarget = (ChannelSftp) sessionTarget.openChannel("sftp");
channelTarget.connect();
System.out.println("Target Channel Connected");
} catch (JSchException e) {
System.out.println("Error Occured ======== Connection not estabilished");
log.error("Error Occured ======== Connection not estabilished", e);
} finally {
channelTarget.exit(); // Warning : dereferencing possible null pointer
channelTarget.disconnect(); // Warning : dereferencing possible null pointer
sessionTarget.disconnect(); // Warning : dereferencing possible null pointer
}
我收到dereferencing possible null pointer
警告,如何解决这些警告???在哪里可以断开Session
和Channel
???
3条答案
按热度按时间b1uwtaje1#
sessionTarget = jsch.getSession(backupUser, backupHost, backupPort);
在这一行中,getSession()
方法可以抛出异常,因此变量sessionTarget
和channelTarget
将为空,而在finally块中,您正在访问这些变量,这可能会导致空指针异常。为了避免这种情况,请在访问变量之前在
finally
块中检查是否为null。cdmah0mi2#
这意味着:如果
channelTarget
和sessionTarget
在finally块中为空,该怎么办?检查它们是否为空,以避免警告。iyfamqjs3#
我认为netbeans只是想警告你这些可能是空的,这可能不是necasarilly真的。你可以选择禁用警告虽然。只要把你的光标放在警告按
ALT+ENTER
和选择,甚至禁用警告。