如果客户正在运行 Lotus Domino 服务器,则不应尝试将数据库作为文件对象来访问。你应该使用这样的东西:
Database db = s.getDatbase("server name/organization name", "path/test.nsf"
您应该从 Domino 服务器的管理员那里获得“服务器名称/组织名称”字符串,并且路径应该相对于 Domino 服务器的根数据目录。或者,您可以使用以下内容:
DbDirectory dbDir = s.getDbDirectory("server name/organization name")
然后您可以使用 DbDirectory 类的方法来定位您需要的特定数据库。
编辑添加更多信息:
知道 Lotus Notes API 有自己的抽象文件名格式,实施了 20 多年,这对您也很有用。这种格式如下所示:
"CN=Domino server name/O=organization name!!folder path/test.nsf"
如果使用这种格式,那么即使数据库托管在 Domino 服务器上,也可以将 getDatabase() 的第一个参数留空。Notes API 将处理特定于操作系统的格式问题,但是 API 无法为您处理一件事:路径和文件组件在 Windows 上不区分大小写,但在 Linux 上区分大小写. 考虑一下……这甚至可能与您的问题有关。如果真正的文件名是 'Test.nsf' 而不是 'test.nsf' 你会遇到问题 - 但我很确定那将是 NotesException 而不是 FileNotFoundException 所以它可能不相关。