无法创建 FileTransferManager 对象

Cannot create FileTransferManager object

我正在尝试在我的项目中实现文件传输,但无法创建 FileTransferManager 对象,它说:

FileTransferManager (org.jivesoftware.smack.Connection) in FileTransferManager cannot be applied to (org.jivesoftware.smack.tcp.XMPPTCPConnection)

这是我的代码:

 FileTransferManager manager = new FileTransferManager(connection);
            // Where connection is an object of XMPPTCPConnection

使用 Smack 4.2.0 和 Openfire 服务器

问题可能出在 smack jar 的版本上。 对于最新版本,例如 3.2.1,它应该可以工作。

如果我们谈论 class org.jivesoftware.smackx.filetransfer.FileTransferManager 它没有 public 构造函数但是它有一个静态工厂方法:

public static synchronized FileTransferManager getInstanceFor(XMPPConnection connection)

所以我会尝试以下操作:

FileTransferManager manager = FileTransferManager.getInstanceFor(connection);

你确定你导入了权限class?因为你根本不应该调用它的构造函数。

您可以使用 getDefaultFileTransferManager 来实现它:

public static FileTransferManager getDefaultFileTransferManager(FileTransferAuth fileTransferAuth)
                                                     throws ClientException,
                                                            ServiceException

参考:official doc for Class FileTransferManager