我一直在使用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)
观察:
所以我想请求所有人提出任何建议或解决方案来解决这个问题。
感谢您的快速回复。我真的很感激。我正在使用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
}
}
答案 0 :(得分: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文件(通过defaut)的最佳方法。另外,请确保您编译的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.jar位于类路径中并检查实际使用的导入来编写使用Domino-Java API的任何类。 If you're not doing remote calls你可以使用lotus.domino。*,而不是lotus.domino.cso。*。
答案 1 :(得分:-1)
如果您使用的Notes.jar
来自本地便笺安装,那么我认为它只能用于访问本地运行的Notes客户端。要访问远程服务器,还有另一个名为NCSO.jar
的jar,它实现了远程Corba / IIOP协议。您可能需要让管理员从服务器上为您提供此jar的副本。