我正在使用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)
我已经配置了路径和类路径。我在电脑上安装了笔记客户端。
这是我的问题。谢谢!
答案 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”);