Я получаю FileNotFound Exception в методе put (String local, String remote) при использовании приведенной ниже зависимости в файле pom. Я следовал https://www.jadaptive.com/app/manpage/en/article/1564743 в качестве документа установки
<dependency>
<groupId>com.sshtools</groupId>
<artifactId>maverick-synergy-client</artifactId>
<version>3.0.0-SNAPSHOT</version>
</dependency>
и фрагмент кода, как показано ниже
ssh.runTask(new SftpClientTask(ssh) {
@Override
protected void doSftp() {
try {
log.info("File to Copy:{}", fileToCopy.getAbsolutePath());
put(fileToCopy.getAbsolutePath(), remoteDir);
log.info("SFTP File put operation done successfully");
isSftpSuccessful = Boolean.TRUE;
} catch (FileNotFoundException e) {
e.printStackTrace();
message = "Seems invalid file is being uploaded through SFTP";
isSftpSuccessful = Boolean.FALSE;
} catch (SftpStatusException e) {
e.printStackTrace();
if (e.getStatus() == SftpStatusException.SSH_FX_PERMISSION_DENIED) {
message = "Failed to create file in remote directory as the configured user don't have permission to create one";
}
isSftpSuccessful = Boolean.FALSE;
} catch (SshException e) {
e.printStackTrace();
isSftpSuccessful = Boolean.FALSE;
} catch (TransferCancelledException e) {
e.printStackTrace();
isSftpSuccessful = Boolean.FALSE;
} catch (Exception e) {
e.printStackTrace();
isSftpSuccessful = Boolean.FALSE;
}
}
});
Источник приведенного выше кода: https://www.jadaptive.com/app/manpage/en/article/199500
Это работало нормально 1 неделю назад, когда у меня был невменяемый synergy-client-3.0.0-20200225.155328-75.jar в моем хранилище .m2. После того, как я вчера снова собрал свой код, я получил несколько новых зависимостей, загруженных в мой репозиторий .m2 и maverick-synergy-client-3.0.0-20200405.143821-96.jar. С тех пор я получаю исключение ниже
java.io.FileNotFoundException: C:\Users\PSEZWAR\C:\Users\PSEZWAR\WelcomeSFTP.txt (The filename, directory name, or volume label syntax is incorrect)
at java.io.FileInputStream.open0(Native Method)
at java.io.FileInputStream.open(FileInputStream.java:195)
at java.io.FileInputStream.<init>(FileInputStream.java:138)
at com.sshtools.common.files.direct.AbstractDirectFile.getInputStream(AbstractDirectFile.java:109)
at com.sshtools.client.sftp.SftpClient.put(SftpClient.java:1778)
at com.sshtools.client.sftp.SftpClient.put(SftpClient.java:1892)
at com.sshtools.client.sftp.SftpClientTask.put(SftpClientTask.java:976)
at com.xylem.owareportservice.util.SFTPUtil$1.doSftp(SFTPUtil.java:129)
at com.sshtools.client.sftp.SftpClientTask.doTask(SftpClientTask.java:55)
at com.sshtools.common.ssh.ConnectionAwareTask.run(ConnectionAwareTask.java:45)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Значением fileToCopy является C: \ Users \ PSEZWAR \ WelcomeSFTP.txt, определенный в main. У меня есть локальный файл по адресу C: \ Users \ PSEZWAR \ WelcomeSFTP.txt, но код библиотеки добавляет C: \ Users \ PSEZWAR \ в мое местоположение файла и делает его C: \ Users \ PSEZWAR \ C: \ Users \ PSEZWAR \ WelcomeSFTP.txt, что приводит к исключению FileNotFoundException. Кроме того, если у меня есть локальный файл в /tmp/WelcomeSFTP.txt, он добавляется в каталог / root / в папку, приводящую к исключению FileNotFoundException. Пожалуйста, помогите мне решить проблему. Я также поднял проблему в github https://github.com/sshtools/maverick-synergy/issues