Lotus Notes Java应用程序找不到notes.ini

所描述的系统都是带有Lotus Notes 8.5的Windows XP。

我有一个Java应用程序(下面的示例代码),它使用notes.jar与Lotus Notes交互。 该应用程序在c:\Program Files\Lotus\Notes的Lotus安装目录中具有notes.ini并且用户ID文件位于c:\Program Files\Lotus\Notes\Data 。 用户必须输入密码才能登录Lotus。 此系统将HKLM\Software\Lotus\Notes\MultiUser设置为0 (单用户系统)。 在这台机器上,下面的代码在四个println上显示了良好的值。

在问题系统上,此应用程序打印四个标题但空白四个值(用户名,密钥文件名,邮件文件和邮件服务器都是空白)。 此问题系统在D:\Data\johnsmith\NotesDatanotes.ini和用户ID文件。 Lotus安装在C:\Program Files\Lotus\Notes 。 此问题系统还将HKLM\Software\Lotus\Notes\MultiUser设置为1 (暗示它是多用户而不是单个用户)。 最后,在Lotus的文件 – >安全 – >用户安全对话框下,选中“使用您的操作系统登录登录到Notes”框(因此用户不输入密码登录Lotus)。

因此,似乎在问题系统中,找不到notes.ini文件(因为notes.ini是应该从中读取四个输出值的位置)。 我查看了Notes.jar API并且看不到任何指定notes.ini位置的方法。 notes.ini所在的目录是在Windows PATH ,但这没有帮助。

任何帮助,将不胜感激。

 import java.io.*; import lotus.domino.*; public static void main(String[] args) throws IOException { try { NotesThread.sinitThread(); Session session = NotesFactory.createSession(); System.out.println("Common user name: " + session.getCommonUserName()); System.out.println("KeyFilename: " + session.getEnvironmentString("KeyFilename", true)); System.out.println("MailFile: " + session.getEnvironmentString("MailFile", true)); System.out.println("MailServer: " + session.getEnvironmentString("MailServer", true)); } catch (Exception ex) { ex.printStackTrace(); } finally { NotesThread.stermThread(); } } 

如原始问题中所述,如果HKEY_LOCAL_MACHINE\Software\Lotus\Notes\MultiUser的值为1 ,那么您将进行多用户安装(即使您是Lotus的唯一用户)。

这是一个有效的解决方案。 找到Notes.ini的位置,可能是C:\Documents and Settings\(username)\Lotus 。 编辑或创建下面的字符串值并将其设置为Notes.ini目录。 HKEY_CURRENT_USER\Software\Lotus\Notes\(optional-version)\NotesIniPath

在多用户环境中,Lotus Notes从NotesIniPath注册表值中获取ini文件名。

添加新的命令行参数“= c:\ data \ johnsmith \ NotesData \ notes.ini”。 要实现这一点,您需要使用NotesFactory.CreateSession(String host,String args [],String user,String passwd); 方法,在设置一个包含该参数的新String数组以及传递的其他任何参数之后,因为它基本上应该是传递给静态Main的String args []。 (= fullpath \ notes.ini参数只需要在数组中,它不需要在任何特定位置。)

这允许使用所使用的notes.ini文件的绝对路径初始化会话,并且似乎支持(因为我可能是错的)Notes 5.0.5。

值得注意的是,Directory =行将从notes.ini中获取并用作所有错误报告和日志记录,作为用户的私有数据目录。

你可以尝试一些事情:

  1. Notes实际上附带了自己的JVM,我发现使用这个JVM使得Java应用程序可以更可靠地运行Notes类,因为任何最终需要的支持库都可以正确配置。

  2. 如果在您启动程序之前笔记已在运行,会发生什么情况。 此处有两种变体:选中或取消选中复选框“不提示输入其他基于Notes的程序的密码”。

  3. 在运行应用程序之前,请确保切换到Notes.ini所在的目录。 (并validation用户无法看到任何其他notes.ini变量)