Я запускаю локальный SFTP-сервер, используя Apache Mina SSHD. Вот мои связанные code. Для тестирования я использую WinSCP в качестве моего SFTP-клиента. Я могу подключиться к серверу успешно и также просматривать корневой каталог сервера. Но проблема заключалась в том, что при попытке загрузить файл в корневой каталог сервера.UnsupportedOperationException в NativeSshFile.setAttributes при загрузке файлов Apache Mina sshd Server
Я получил
Exception caught in SFTP subsystem
java.lang.UnsupportedOperationException: null
at org.apache.sshd.common.file.nativefs.NativeSshFile.setAttributes(NativeSshFile.java:634) ~[sshd-core-0.10.0.jar:0.10.0]
at org.apache.sshd.server.sftp.SftpSubsystem.process(SftpSubsystem.java:427) ~[sshd-core-0.10.0.jar:0.10.0]
at org.apache.sshd.server.sftp.SftpSubsystem.run(SftpSubsystem.java:334) ~[sshd-core-0.10.0.jar:0.10.0]
at java.lang.Thread.run(Unknown Source) [na:1.7.0_75].
Ниже мои связанные файлы журнала.
10:30:46.758 [Thread-1] DEBUG o.a.s.c.file.nativefs.NativeSshFile - Authorized
10:30:46.767 [Thread-1] ERROR o.a.sshd.server.sftp.SftpSubsystem - Exception caught in SFTP subsystem
java.lang.UnsupportedOperationException: null
at org.apache.sshd.common.file.nativefs.NativeSshFile.setAttributes(NativeSshFile.java:634) ~[sshd-core-0.10.0.jar:0.10.0]
at org.apache.sshd.server.sftp.SftpSubsystem.process(SftpSubsystem.java:427) ~[sshd-core-0.10.0.jar:0.10.0]
at org.apache.sshd.server.sftp.SftpSubsystem.run(SftpSubsystem.java:334) ~[sshd-core-0.10.0.jar:0.10.0]
at java.lang.Thread.run(Unknown Source) [na:1.7.0_75]
10:30:46.767 [Thread-1] DEBUG o.a.s.server.channel.ChannelSession - Send SSH_MSG_CHANNEL_EOF on channel ChannelSession[id=0, recipient=256]
10:30:46.768 [Thread-1] DEBUG o.a.sshd.common.io.nio2.Nio2Session - Writing 64 bytes
Кроме того, моя Maven зависимость,
<dependency>
<groupId>org.apache.mina</groupId>
<artifactId>mina-core</artifactId>
<version>2.0.9</version>
</dependency>
<dependency>
<groupId>org.apache.sshd</groupId>
<artifactId>sshd-sftp</artifactId>
<version>0.9.0</version>
</dependency>
<dependency>
<groupId>org.apache.sshd</groupId>
<artifactId>sshd-core</artifactId>
<version>0.10.0</version>
</dependency>
Я хотел бы знать, что, как я могу преодолеть вышеупомянутую проблему при загрузке файлов на мой локальный сервер SFTP. Благодарю.
Благодаря @Martin Prikryl.But проблема заключается в том, что я изменил ** Sshd-ядро ** 0.10.0 в 0.14.0 версии, но некоторые из методов отменяют не при условии, чтобы настроить корневой directory.eg : ** sshd.setFileSystemFactory (новый NativeFileSystemFactory() { \t \t \t Override \t \t \t общественного FileSystemView createFileSystemView (заключительная сессия сессия) { \t \t \t \t возвращение новый NativeFileSystemView (сессия.GetUserName(), ложные) { \t \t \t \t \t Override \t \t \t \t \t общественности Строка getVirtualUserDir() { \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t \t возвращение "C:/rootdirectory"; \t \t \t \t \t} \t \t \t \t}; \t \t \t}; \t \t}); ** – gihan
Но это не относится к этому вопросу. Если у вас есть проблема с переопределяющими методами 'NativeFileSystemView' в 0.14.0, задайте отдельный вопрос. Я верю в этот вопрос. –
Да @Martin Prikryl, который был моим предыдущим вопросом, чтобы установить root в apache mina.That ответ работает только для версии 0.10.0. Но не может применяться в версии 0.14.0. (Нет метода переопределения методов на getVirtualUserDir()). http://stackoverflow.com/questions/29389249/how-to-set-root-directory-in-apache-mina-sshd-server-in-java Я подниму новый вопрос на версию 0.14.0. Спасибо Мартину за вашу помощь. – gihan