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

Lotus Notes Java应用程序找不到Notes.ini,java,lotus-notes,lotus,lotus-domino,Java,Lotus Notes,Lotus,Lotus Domino,所描述的两个系统都是带有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\MultiU

所描述的两个系统都是带有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上显示良好的值

在一个有问题的系统上,这个应用程序打印四个标题,但四个值都是空白的:用户名、密钥文件名、邮件文件和邮件服务器都是空白的。此问题系统的notes.ini和用户ID文件位于D:\Data\johnsmith\NotesData中。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路径中,但这没有帮助

任何帮助都将不胜感激

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();
  }
}

您可以尝试以下几种方法:

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

如果在启动程序之前notes已经在运行,会发生什么情况。这里有两种变体:复选框不提示输入来自其他基于Notes的程序的密码已选中或未选中

在运行应用程序之前,请确保切换到Notes.ini所在的目录。并验证用户看不到任何其他notes.ini变量


如原问题中所述,如果HKEY_LOCAL_MACHINE\Software\Lotus\Notes\MultiUser的值为1,则即使您是Lotus的唯一用户,也可以安装多用户

这里有一个有效的解决方案。查找Notes.ini的位置,可能是C:\Documents and Settings\username\Lotus之类的位置。编辑或创建下面的字符串值,并将其设置为Notes.ini目录。HKEY\ U当前\用户\软件\ Lotus\Notes\可选版本\注释路径


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

添加一个新的命令行参数,=c:\data\johnsmith\NotesData\Notes.ini。要实现这一点,您需要使用NotesFactory.CreateSessionString主机、字符串args[]、字符串用户、字符串passwd;方法,因为它基本上应该是传递给static Main的字符串args[],所以在设置包含该参数和任何其他参数的新字符串数组之后。=fullpath\notes.ini参数只需要位于数组中,而不需要位于任何特定位置

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


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

这些都是很好的建议。不幸的是,它们都没有起作用。