Apache Mina SFTP的SftpSubsystem.Factory()

7

我正在尝试使用Apache Mine SSHD v1.2.0设置一个简单的SFTP服务器。

我查看了网上的几个示例,例如这里这里这里

然而,它们全部都有一行共同的代码,但我无法使NetBeans解析该行代码。NetBeans告诉我在SftpSubsystem中找不到Factory。该问题的代码如下:

sftpServer.setSubsystemFactories (
    Arrays. <NamedFactory <Command >> asList (new SftpSubsystem.Factory ()));

我的main函数大致如下:

SshServer sftpServer = SshServer.setUpDefaultServer ();
sftpServer.setPort (PORT);
sftpServer.setKeyPairProvider (new SimpleGeneratorHostKeyProvider (new File("hostkey.ser")));
sftpServer.setSubsystemFactories (
     Arrays. <NamedFactory <Command >> asList (new SftpSubsystem.Factory ()));
sftpServer.setPasswordAuthenticator (new PasswordAuthenticator () {
    @Override
    public boolean authenticate (String username, String password, ServerSession session) {
       return true;
    }
});
sftpServer.start ();
while(true);

我有什么遗漏吗?我只是想连接到一个虚拟的SFTP服务器,列出一些目录并上传一两个文件。问题在于我想从现有的Java应用程序内部完成这个任务。

2个回答

12

在最新版本的Apache SSHD中,它是SftpSubsystemFactory

sftpServer.setSubsystemFactories(
    Arrays.<NamedFactory<Command>>asList(new SftpSubsystemFactory()));

1
谢谢。我不确定为什么找不到,但是用你提供的那行代码替换我的代码解决了我的问题。 - AcidHawk
1
谢谢,这对我很有效。互联网上的所有示例都有 SftpSubsystem.Factory。唉。 - djangofan

3
我正在使用版本2.6.0,现在无需进行类型转换。你只需要简单地写出以下内容:
sftpServer.setSubsystemFactories(Arrays.asList(new SftpSubsystemFactory()));

1
你也可以使用 "Collections.singletonList"。 - Krishna

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接