Java-приложение Lotus Notes не может найти notes.ini - PullRequest
2 голосов
/ 16 июля 2010

Обе описанные системы - 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. 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();
  }
}

Ответы [ 3 ]

2 голосов
/ 17 августа 2010

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

2 голосов
/ 14 июля 2013

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

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

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

1 голос
/ 16 июля 2010

Есть несколько вещей, которые вы можете попробовать:

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

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

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

...