JavaAgent“java.lang.NoClassDefFoundError:de.bea.domingo.DNotesFactory

时间:2014-12-05 22:45:20

标签: java lotus-domino

我尝试在domino designer

中调试以下java代理
  public class JavaAgent extends AgentBase {
     public void NotesMain() {
     DNotesFactory factory = DNotesFactory.getInstance();
        DSession session = factory.getSession();
        DDatabase database;
        try {
            database = session.getDatabase("", "names.nsf");
            DView view = database.getView("($Users)");
            Iterator entries = view.getAllEntries();
            while (entries.hasNext()) {
                DViewEntry entry = (DViewEntry) entries.next();
                System.out.println(entry.getColumnValues().get(0));
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }             
    }
  }

但我得到以下异常

JavaAgent" java.lang.NoClassDefFoundError: de.bea.domingo.DNotesFactory

2 个答案:

答案 0 :(得分:2)

java.lang.NoClassDefFoundError运行时错误。这意味着,在编辑和保存Java代理期间,Designer中可以使用domingo-1.5.1.jar,并且可以编译代码。

因此,jar文件在运行时不可用。

有三种方法可以存储 Java代理 jar 文件,以便它们在运行时可用:

  1. 在目录... \ Lotus \ Notes \ jvm \ lib \ ext
  2. 在代理商档案部分
  3. 在Java Library的档案部分
  4. 请注意,Java代理会忽略Code / Jars中的jar文件(它们只能由XPage使用)。

    1

    jar 文件复制到目录... \ Lotus \ Notes \ jvm \ lib \ ext 。重新启动Notes客户端。然后,您的Java代理将在Notes客户端上运行。

    2

    将带有导入/存档的 jar 文件添加到Java代理本身:

    enter image description here

    3

    如果您有多个代理使用 jar 文件,那么您应该使用jar文件创建一个Java库并将库包含在代理中:

    enter image description here


    从您的其他问题我可以看到您正在使用Notes Domino版本9.项目domingo已经过时并且不支持所有新功能。请改用OpenNTF Domino API org.openntf.domino 。有关如何将此API与Jav​​a代理一起使用的说明,您可以找到here。存储Java代理的jar文件的地方总是相同的。

答案 1 :(得分:1)

如果你想使用domingo类,你需要添加:

import  de.bea.domingo.*;

您可能还想考虑使用新的OpenNTF Domino API classes而不是domingo类。 OpenNTF项目更新,更雄心勃勃,他们正在积极改进他们的代码。