2

これは、私が実行しようとしている非常に単純化された Lotus Domino Java エージェント コードです...

import lotus.domino.*;

enum SingletonTest { 
    INSTANCE;

    public void helloWorld() {
        System.out.println("Hello World");
    }
}

public class JavaAgent extends AgentBase {

    public void NotesMain() {

        try {
            System.out.println("Started");
            SingletonTest.INSTANCE.helloWorld();
            System.out.println("Done");

        } catch(Exception e) {
            e.printStackTrace();
        }
    }
}

しかし、実行しようとすると、これがJavaコンソールに表示されます...

Started
Exception in thread "AgentThread: JavaAgent" java.lang.VerifyError: JVMCFRE028 ldc* bytecode must reference a constant; class=, method=valueOf(Ljava/lang/String;)LSingletonTest;, pc=0
    at java.lang.ClassLoader.defineClassImpl(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:275)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:212)
    at lotus.domino.AgentLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:626)
    at JavaAgent.NotesMain(JavaAgent.java:17)
    at lotus.domino.AgentBase.runNotes(Unknown Source)
    at lotus.domino.NotesThread.run(Unknown Source)

エージェントに Java 1.6 を使用しています。v8.5.3 FP3 を使用しており、notes.ini に..

JavaCompilerTarget=CurrentJavaVersion

それで、私は何を間違っていますか?

コードを含む列挙型を使用する IBM Java バージョンのクラス・ローダーに問題はありますか?

これは、私が従おうとしたシングルトンコーディングパターンです...

https://stackoverflow.com/a/71399/2530065

編集:「トリガー:イベント時:アクションメニュー選択」および「ターゲット:なし」を使用して、これをノーツクライアントエージェントとして実行していることをおそらく追加する必要があります。

edit2: したがって、同じ IBM JRE/JVM を使用してスタンドアロン Java プログラムでこの正確なコードをテストしましたが、コードは問題なく完全に動作します。Notes クライアント内で Java エージェントとして動作させることができないようです。

4

2 に答える 2