0

我一直在使用 JAVA Lotus notes API 从外部服务器访问 Lotus Notes(.nsf) 数据,但是在访问 NSF 时,我收到了很多函数的以下错误。

NotesException: Not implemented
  at lotus.domino.cso.Base.notImplemented(Unknown Source)
  at lotus.domino.cso.View.getAllUnreadEntries(Unknown Source)
  at com.lotus.GetName.runNotes(GetName.java:40)
  at lotus.domino.NotesThread.run(Unknown Source)

观察:

  1. 我用类路径(Notes.jar)重新检查了我的设置
  2. 能够访问外部服务器。
  3. 能够在外部服务器上创建 Lotus Domino 会话

所以我想请大家提出任何建议或解决方案来解决这个问题。


感谢您的快速回复。我非常感谢。我正在使用 NCSO.jar ,是的,我正在拨打远程电话。我与管理员核对并要求提供相同的 NCSO.jar 和 Notes.jar 。他们使用的服务器是 8.5 。但它仍然抛出相同的错误。除此之外,我不知道如何使用 eclipse 编写和使用 java,因为我完全是 Notes Java Development 的新手。请尽快帮助我。谢谢。:)

我使用的代码是:

public class GetName
{
  public static void main(String argv[])
  {
       try
       {

           Database db;

           String ior = NotesFactory.getIOR("****");

             Session s =  NotesFactory.createSessionWithIOR(ior,"****","****");

             db =  s.getDatabase("****","mail/mail1/****");

    View v =  db.getView("$Inbox");

System.out.println(v.getAllUnreadEntries().getCount());// Getting error on this line
}
}
4

2 回答 2

1

在没有更多信息的情况下,我将不得不在这里推断一些事情。首先,该错误表明您正在使用仅在 Lotus Notes/Domino 8.5 中可用的功能。鉴于错误显示“未实现”,我猜您使用的是未实现 getAllUnreadEntries 的 Notes.jar/NCSO.jar。我怀疑这个问题是环境问题而不是你的逻辑。

检查您导入到项目中的 jar 文件是否来自 Domino 8.5。Domino 的 Java API 的早期版本不支持“getAllUnreadEntries”。

最好的确保方法是找到并复制(默认)安装在 Lotus Notes 客户端(位于 notes\jvm\lib\ext 目录)中的 jar 文件。此外,请确保您正在编译的 jar 文件与您正在运行的版本相匹配。因此,如果您使用 Notes 8.5 jar 开发了它,并且它在 Domino 7 或服务器或客户端上的 8.0 上运行,则运行时将生成错误,尝试运行不存在的方法。您需要确保它在 8.5 上运行。

这是我从 Domino Designer 帮助中提取的一个 Java 代理示例,它访问视图中的未读条目。

import lotus.domino.*;

public class JavaAgent extends AgentBase {

  public void NotesMain() {
    try {
      Session session = getSession();
      AgentContext agentContext = session.getAgentContext();
      // (Your code goes here) 
      Database db = agentContext.getCurrentDatabase();
      View view = db.getView("All");
      ViewEntryCollection vec = view.getAllUnreadEntries();
      System.out.println("View has " +
      vec.getCount() + " unread entries");     
      view.markAllRead();
      view.refresh();
      vec = view.getAllUnreadDocuments();
      System.out.println("View has " +
      vec.getCount() + " unread entries after markAllRead");    
    } catch(Exception e) {
      e.printStackTrace();
    }
  }
}

这可能无法完全反映您要执行的操作,因为它使用“AgentBase”作为 Java 代理。但是 try 语句中的所有内容都适用。听起来您在 Notes 代理之外运行。

您可以编写任何使用 Domino-Java API 的类,方法是确保 Notes.jar 和 NCSO.jar 在您的类路径中,并检查实际使用了哪些导入。如果您不进行远程调用,您可以只使用 lotus.domino.*,而不是 lotus.domino.cso.*。

于 2011-12-18T05:00:09.873 回答
-1

如果Notes.jar您使用的是从本地 Notes 安装中获取的,那么我认为它只能用于访问本地运行的 Notes 客户端。要访问远程服务器,还有另一个名为NCSO.jar实现远程 Corba/IIOP 协议的 jar。您可能需要让您的管理员从服务器给您这个 jar 的副本。

于 2011-12-17T23:04:53.927 回答