2

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

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

在有问题的系统上,此应用程序打印四个标题,但四个值的空白(用户名、密钥文件名、邮件文件和邮件服务器都是空白的)。这个问题系统有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.jarAPI,看不到任何指定notes.ini. 所在的目录notes.ini位于 WindowsPATH中,但这无济于事。

任何帮助,将不胜感激。

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

3 回答 3

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 NotesiniNotesIniPath注册表值中获取文件名。

于 2010-08-17T16:18:29.560 回答
2

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

这允许使用使用的 notes.ini 文件的绝对路径来初始化会话,并且似乎从 Notes 5.0.5 开始支持(尽管我可能错了)。

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

于 2013-07-13T22:38:31.490 回答
1

您可以尝试多种方法:

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

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

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

于 2010-07-16T02:28:24.380 回答