Java 访问NSF时Lotus Notes API出现错误
我一直在使用JavaLotusNotesAPI从外部服务器访问LotusNotes(.nsf)数据,但是在访问nsf时,我遇到了以下许多函数的错误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.
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)
意见:
谢谢你的快速回复。我真的很感激。我正在使用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”类?