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

时间:2014-02-13 09:13:25

标签: java lotus-domino

我正在使用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)

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

这是我的问题。谢谢!

3 个答案:

答案 0 :(得分: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客户端配置为使用邮件文件的本地副本,它也应该有效。

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

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

相关问题