2

説明されている両方のシステムは、LotusNotes8.5を搭載したWindowsXPです。

notes.jarを使用してLotusNotesと対話するJavaアプリ(以下のサンプルコード)があります。このアプリnotes.iniは、Lotusのインストールディレクトリにがc:\Program Files\Lotus\Notesあり、ユーザーIDファイルがにあるシステムで正常に動作しますc:\Program Files\Lotus\Notes\Data。Lotusにログインするには、ユーザーはパスワードを入力する必要があります。このシステムは(シングルユーザーシステム)にHKLM\Software\Lotus\Notes\MultiUser設定されています。0このマシンでは、以下のコードは4つprintlnの値に適切な値を表示します。

問題のあるシステムでは、このアプリは4つの見出しを出力しますが、4つの値は空白になります(ユーザー名、キーファイル名、メールファイル、およびメールサーバーはすべて空白です)。この問題のあるシステムには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.ini4つの出力値が読み取られることになっているため)。APIを調べましたがNotes.jar、の場所を指定する方法がわかりません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

マルチユーザー環境では、 LotusNotesはレジストリ値iniからファイル名を取得します。NotesIniPath

于 2010-08-17T16:18:29.560 に答える
2

新しいコマンドラインパラメータ「=c:\ data \ johnsmith \ NotesData\notes.ini」を追加します。これを実現するには、NotesFactory.CreateSession(String host、String args []、String user、String passwd);を使用する必要があります。メソッド、そのパラメータと渡された他の引数を含む新しいString配列を設定した後、これは基本的に静的Mainに渡されるStringargs[]であると想定されているためです。(= 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. プログラムを開始する前にノートがすでに実行されている場合はどうなりますか。ここには2つのバリエーションがあります。[他のNotesベースのプログラムからのパスワードの入力を求めない]チェックボックスがオンまたはオフになっています。

  3. Notes.iniアプリを実行する前に、が自宅にあるディレクトリに切り替えてください。(そして、ユーザーが他のnotes.ini変数を見ることができないことを確認してください)

于 2010-07-16T02:28:24.380 に答える