SFTP
のNetBeans
用のプログラムを作成しています。
私のコードの一部:
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
???の接続を解除できる場所
sessionTarget = jsch.getSession(backupUser, backupHost, backupPort);
この行では、getSession()
メソッドが例外をスローする可能性があるため、変数sessionTarget
およびchannelTarget
はnullになり、最後にブロック、これらの変数にアクセスしているため、nullポインター例外が発生する可能性があります。
これを回避するには、変数にアクセスする前に、finallyブロックでnullを確認します。
finally {
if (channelTarget != null) {
channelTarget.exit();
channelTarget.disconnect();
}
if (sessionTarget != null ) {
sessionTarget.disconnect();
}
}
つまり、finallyブロックでchannelTarget
およびsessionTarget
がnullの場合はどうなりますか?警告を回避するためにnullをチェックしてください。
Netbeansは、これらがnullである可能性があることを警告しようとしているだけだと思います。ただし、警告を無効にすることもできます。警告カーソルALT+ENTER
および警告を無効にする場合でも、選択肢から選択します。