Приложение Lotus Notes Java не может найти файл notes.ini

Обе описанные системы - это Windows XP с Lotus Notes 8.5.

У меня есть приложение Java (пример кода ниже), которое использует notes.jar для взаимодействия с Lotus Notes. Приложение отлично работает в системе, в которой notes.ini находится в каталоге установки Lotus c:\Program Files\Lotus\Notes, а файл идентификатора пользователя находится в c:\Program Files\Lotus\Notes\Data. Пользователь должен ввести пароль для входа в Lotus. В этой системе HKLM\Software\Lotus\Notes\MultiUser установлено значение 0 (однопользовательская система). На этом компьютере приведенный ниже код отображает хорошие значения для четырех println.

В проблемной системе это приложение печатает четыре заголовка, но для четырех значений остаются пробелы (имя пользователя, имя файла ключа, почтовый файл и почтовый сервер остаются пустыми). Эта проблемная система имеет notes.ini, а файл идентификатора пользователя находится в D:\Data\johnsmith\NotesData. Лотус установлен в 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, находится в PATH 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();
  }
}

person Dean Hill    schedule 15.07.2010    source источник


Ответы (3)


Как упоминалось в исходном вопросе, если 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.

person Dean Hill    schedule 17.08.2010

Добавьте новый параметр командной строки «= c: \ data \ johnsmith \ NotesData \ notes.ini». Чтобы это произошло, вам нужно использовать NotesFactory.CreateSession (String host, String args [], String user, String passwd); после настройки нового массива String, содержащего этот параметр и любые другие аргументы, которые были переданы, поскольку в основном это должен быть String args [], переданный в static Main. (Параметр = fullpath \ notes.ini просто должен быть в массиве, он не должен находиться в каком-либо конкретном месте.)

Это позволяет инициализировать сеанс с использованием абсолютного пути к используемому файлу notes.ini и, по-видимому, поддерживается с (хотя я могу ошибаться) Notes 5.0.5.

Примечательно, что строка Directory = будет взята из этого файла notes.ini и использоваться для всех отчетов об ошибках и регистрации в качестве каталога личных данных пользователя.

person sjcaged    schedule 13.07.2013

Вы можете попробовать следующее:

  1. На самом деле Notes поставляется со своей собственной JVM, и я обнаружил, что использование этой JVM позволяет приложениям Java работать более надежно с классами Notes, поскольку любая в конечном итоге необходимая библиотека поддержки будет правильно настроена.

  2. Что произойдет, если заметки уже запущены до того, как вы запустите свою программу. Здесь есть 2 варианта: Флажок «Не запрашивать пароль от других программ на основе Notes» установлен или снят.

  3. Перед запуском приложения обязательно переключитесь в каталог, в котором находится Notes.ini. (И убедитесь, что пользователь не видит других notes.ini переменных)

person stwissel    schedule 16.07.2010
comment
Это были хорошие предложения. К сожалению, ни один из них не работал. - person Dean Hill; 17.08.2010