Java 访问NSF时Lotus Notes API出现错误

Java 访问NSF时Lotus Notes API出现错误,java,lotus-notes,lotus-domino,lotus,Java,Lotus Notes,Lotus Domino,Lotus,我一直在使用JavaLotusNotesAPI从外部服务器访问LotusNotes(.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.

我一直在使用JavaLotusNotesAPI从外部服务器访问LotusNotes(.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)
意见:

  • 我已经用类路径(Notes.jar)重新检查了我的设置
  • 能够访问外部服务器
  • 能够在外部服务器上创建LotusDomino会话
  • 因此,我想请大家提出任何建议或解决办法来解决这个问题



    谢谢你的快速回复。我真的很感激。我正在使用NCSO.jar,是的,我正在打远程电话。我向管理员查询,要求使用相同的NCSO.jar和Notes.jar。他们使用的服务器是8.5。但它仍在抛出同样的错误。除此之外,我不知道如何使用eclipse编写和使用java,因为我对Notes java开发完全是新手。请尽快帮助我。谢谢。:)

    我使用的代码是:

    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
    }
    }
    

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

    我将不得不在这里推断一些事情,而不需要更多信息。首先,该错误表明您正在使用一个仅在LotusNotes/Domino8.5中可用的特性。考虑到错误是“未实现”,我猜您使用的是一个Notes.jar/NCSO.jar,它没有实现getAllunReadentry。我怀疑这个问题是环境问题,而不是你的逻辑

    检查导入项目的jar文件是否来自Domino8.5。Domino的java API的早期版本不支持“GetAllUnreaderies”

    确保这一点的最佳方法是找到并复制LotusNotes客户机(位于Notes\jvm\lib\ext目录)中安装的jar文件(通过defaut)。另外,确保编译的jar文件与运行的版本匹配。因此,如果您使用Notes8.5JAR开发了它,并且它在服务器或客户机上的Domino7或8.0上运行,那么运行时将生成一个错误,试图运行一个不存在的方法。你需要确保它在8.5版本上运行

    下面是我从DominoDesigner帮助中提取的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代理之外运行


    通过确保Notes.jar和NCSO.jar位于类路径中并检查实际使用的导入,可以编写任何使用Domino Java API的类。您可以只使用lotus.domino.*,而不使用lotus.domino.cso.*。

    请向我们展示相应的源代码。您的客户端计算机上是否安装了Notes客户端?notes.jar需要安装notes客户端-它必须能够在本地找到并加载notes.dll和notes.ini文件。在运行代码的机器上运行的是什么版本的notes或domino?我在进行远程连接时使用的是NCSO.jar。除了Domino版本是8.5ANS之外,NSCO.jar版本也是如此。No,Notes.jar可以访问服务器上的数据库。如果您在未安装notes或domino的计算机上运行代码,则只需要ncso.jar。感谢您的快速回复。我真的很感激。我正在使用NCSO.jar,是的,我正在打远程电话。我向管理员查询,要求使用相同的NCSO.jar和Notes.jar。他们使用的服务器是8.5。但它仍在抛出同样的错误。除此之外,我不知道如何使用eclipse编写和使用java,因为我对Notes java开发完全是新手。请尽快帮助我。谢谢。:)您现在需要使用正在生成错误的类更新您的问题,因为它不是直接的。您是否正在尝试实例化“lotus.domino.cso.Base”类?