所描述的系统都是带有Lotus Notes 8.5的Windows XP。
我有一个Java应用程序(下面的示例代码),它使用notes.jar与Lotus Notes交互。该应用程序在notes.ini
的Lotus安装目录中具有c:\Program Files\Lotus\Notes
且用户ID文件位于c:\Program Files\Lotus\Notes\Data
的系统上正常运行。用户必须输入密码才能登录Lotus。此系统将HKLM\Software\Lotus\Notes\MultiUser
设置为0
(单用户系统)。在这台机器上,下面的代码在四个println
上显示了良好的值。
在问题系统上,此应用程序打印四个标题但空白四个值(用户名,密钥文件名,邮件文件和邮件服务器都是空白的)。此问题系统具有notes.ini
和D:\Data\johnsmith\NotesData
中的用户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();
}
}
答案 0 :(得分:2)
如原始问题中所述,如果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从ini
注册表值中获取NotesIniPath
文件名。
答案 1 :(得分:2)
添加新的命令行参数“= 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中获取并用作所有错误报告和日志记录,作为用户的私有数据目录。
答案 2 :(得分:1)
您可以尝试多种方法:
Notes实际上附带了自己的JVM,我发现使用这个JVM可以使Notes类运行得更可靠,因为任何最终需要的支持库都可以正确配置。
如果在开始执行程序之前笔记已在运行,会发生什么情况。此处有两种变体:选中或取消选中复选框“不提示输入其他基于Notes的程序的密码”。
确保在运行应用程序之前切换到Notes.ini
所在的目录。 (并验证用户无法看到任何其他notes.ini
变量)