使用notes API时数据库打开失败

问题描述 投票:1回答:3

我正在使用java应用程序来控制我的笔记客户端发送电子邮件。一些代码:

session = NotesFactory.createSession();
db = session.getDatabase("mail01/xxx", "aaa.nsf");

“mail01 / xxx”是远程服务器名称。代码是对的吗?我不确定。

但是我得到了错误:

NotesException: Database open failed (%1)
    at lotus.domino.local.Database.Nopen(Native Method)
    at lotus.domino.local.Database.open(Unknown Source)
    at test.TestLocal.runNotes(TestLocal.java:67)
    at lotus.domino.NotesThread.run(Unknown Source)

我已配置路径和类路径。我在电脑上安装了笔记客户端。

这是我的问题。谢谢!

java lotus-domino
3个回答
2
投票

在您的计算机上找到notes.ini文件。寻找两行:

MailServer=CN=mail01/O=xxx
MailFile=mail\aaa.nsf

这些是getDatabase()方法的参数中需要的值。请注意,您应该将Java中的反斜杠加倍,因为语言会将它们视为转义,或者只是将它们更改为正斜杠 - Notes API可以使用任一格式。您也不需要'CN ='和'O =',因为如果省略它们,Notes API将假定它们。但其他一切应该与您在notes.ini中找到的完全匹配。

更好的是,使用以下代码从notes.ini中读取值,而不是对服务器和文件进行硬编码:

String mailServer = session.getEnvironmentString("MailServer",true);
String mailFile = session.getEnvironmentString("MailFile",true);
db = session.getDatabase(mailServer,mailFile);

如果你这样做,你不必担心加倍反斜杠或其他任何东西。只要客户端配置正确并且可以在网络上访问服务器和邮件文件,它就可以正常工作。如果Notes客户端配置为使用邮件文件的本地副本,它也应该有效。


0
投票

这更像是评论而不是答案,但我需要更多的声誉点来创建评论(提示,提示)。

在调试这样的问题时,查看NotesException对象中的错误代码会很有帮助。假设您正在捕获NotesException,那么公共NotesException.id字段的值是多少?那应该映射到NotesError类中的一个常量(例如NotesError.NOTES_ERR_DBNOACCESS)。

此外,您的原始问题仅显示堆栈跟踪的5行。异常的根本原因可能是进一步下降。你能包括更多的堆栈跟踪吗?


0
投票

问题是找不到db。所以尝试从db更改路径。如果您的数据库位于服务器上的文件夹中,请在java中提供该文件夹的路径。您的路径变量必须具有正确的格式。在您的示例中,它必须是session = NotesFactory.createSession(); db = session.getDatabase(“mail01 / xxx”,“pathToDB / aaa.nsf”);

© www.soinside.com 2019 - 2024. All rights reserved.