2011-12-17 83 views
0

我一直在使用JAVA Lotus Notes API访问来自外部服务器的Lotus Notes(.nsf)数据,但是在访问许多函数时出现以下错误NSF。Lotus Notes API在访问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开发的新手。请尽快帮助我。谢谢。 :)

我使用的代码是:

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

请同时显示相应的源代码。 – leyrer 2011-12-17 12:46:36

+0

您的客户机上安装了Notes客户机吗? notes.jar需要安装Notes客户机 - 它必须能够在本地查找并加载nnotes.dll和notes.ini文件。 – 2011-12-18 00:02:54

+0

您的代码正在运行的机器上运行的是什么版本的笔记或多米诺骨牌? – 2011-12-18 02:08:31

回答

-1

如果您Notes.jar使用从本地安装的注意事项拍摄那么我认为这只能用来访问本地运行的Notes客户端。要访问远程服务器,有另一个名为NCSO.jar的jar实现远程Corba/IIOP协议。您可能需要让管理员从服务器上为您提供此jar的副本。

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目录中找到)中找到并复制安装的(通过defaut)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代理之外运行。

通过确保Notes.jar和NCSO,您可以编写任何使用Domino-Java API的类。jar在你的类路径中,并检查哪些导入实际上正在使用。 If you're not doing remote calls你可以使用lotus.domino。*,而不是lotus.domino.cso。*。