Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xpages 调用方法NotesAgent.runWithDocumentContext(lotus.domino.local.Document)null时发生异常_Xpages - Fatal编程技术网

Xpages 调用方法NotesAgent.runWithDocumentContext(lotus.domino.local.Document)null时发生异常

Xpages 调用方法NotesAgent.runWithDocumentContext(lotus.domino.local.Document)null时发生异常,xpages,Xpages,我使用XPages已经很长一段时间了,一直忽略了这个错误,但我想了解原因(和/或解决方案,如果可能的话) 因此,当从我的web调用我的XPage代理时,它工作得非常好。但是,向代理添加JAVA脚本库会抛出问题标题中提到的错误。我已经多次看到这个错误,我知道的明显原因是文档为null,但在本例中,我确信文档不是null(因为,它在没有附加脚本的情况下运行)。请在下面找到每个代码 // Javascript: default.js var uId = myList.get(0); // this c

我使用XPages已经很长一段时间了,一直忽略了这个错误,但我想了解原因(和/或解决方案,如果可能的话)

因此,当从我的web调用我的XPage代理时,它工作得非常好。但是,向代理添加JAVA脚本库会抛出问题标题中提到的错误。我已经多次看到这个错误,我知道的明显原因是文档为null,但在本例中,我确信文档不是null(因为,它在没有附加脚本的情况下运行)。请在下面找到每个代码

// Javascript: default.js
var uId = myList.get(0); // this contains the document unique id
var doc:NotesDocument = database.getDocumentByUNID(uId);
var agentName = "groupRobot" ;
var agent:NotesAgent = database.getAgent(agentName);
if (agent != null)
{
if(doc == null){
// do nothing
}else{
agent.runWithDocumentContext(doc);
}
}
else {
getComponent("warningmessageBox").setValue("Failed to run the agent");
}


// Agent : groupRobot

public class JavaAgent extends AgentBase {
Session session;
public void NotesMain() {
session = getSession();
//       ExtractGroup extract_group = new ExtractGroup();
//        extract_group.setSession(session);
//        boolean populatePersons = extract_group.start(); // calling the attached script library to replace group by persons
if(true){
System.out.println("Script finished sucessfully");
}
} // End of Notes Main
} // End of Class

// JAVA SCRIPT LIBRARY : extract_group

public class ExtractGroup {
Session session;
Vector<String> users= new Vector<String>();
Vector<String> groups= new Vector<String>();

public void setSession(Session session) {
this.session = session;
}
public boolean start() {
return true; // removed original code for being more clear
}
} // End of Class
//Javascript:default.js
var uId=myList.get(0);//它包含文档唯一id
var doc:NotesDocument=database.getDocumentByUNID(uId);
var agentName=“groupRobot”;
var-agent:NotesAgent=database.getAgent(agentName);
如果(代理!=null)
{
如果(doc==null){
//无所事事
}否则{
agent.runWithDocumentContext(doc);
}
}
否则{
getComponent(“warningmessageBox”).setValue(“无法运行代理”);
}
//代理:groupRobot
公共类JavaAgent扩展了AgentBase{
会议;
公共无效注释main(){
session=getSession();
//ExtractGroup extract_group=新ExtractGroup();
//提取组设置会话(会话);
//boolean populatePersons=extract_group.start();//调用附加的脚本库以人员替换组
如果(真){
System.out.println(“脚本成功完成”);
}
}//主注释结束
}//下课
//JAVA脚本库:提取组
公共类组{
会议;
向量用户=新向量();
向量组=新向量();
公开作废设置会话(会话){
this.session=会话;
}
公共布尔起始(){
return true;//为了更清晰,删除了原始代码
}
}//下课
我无法理解这其中的原因。任何帮助都将不胜感激

谢谢

注意:我允许对代理进行具有管理员权限的受限操作,并且选择了“以web用户身份运行”选项

编辑1:根据Knut Herrmann的建议,我尝试在一个新数据库上生成相同的库和文件,结果证明是可行的。好吧,现在的问题是我的生产数据库不能正常工作,我不能在新数据库上重现错误。任何关于在新数据库上产生此错误和/或从旧数据库中删除此错误的建议都是非常好的。谢谢


在代理安全选项卡中设置“以Web用户身份运行”


查看更多信息。

您的Java源代码级别是什么?您的
newvector()
中有参数,默认情况下,该参数在Domino Java库中不可用。检查项目和编辑器级别:

文件-->首选项-->Java-->编译器-->编译器遵从性级别

(第二个按钮单击)--->项目属性-->Java编译器-->JDK遵从性


这可能会导致在运行构造函数之前类初始化失败。

Java源文件必须与其包含的类匹配。您的问题表明您导入的文件是extract\u group,而您的类是ExtractGroup
但是,您应该在编译时得到警告或错误

看起来您的doc变量为null。如果没有它的来源和你对它做了什么,这是任何人都猜不到的不,它不是空的..正如我在问题中提到的,它在没有Java脚本库的情况下工作得很好。你仍然让观众猜测:看,它是有效的,但当我添加一些东西时,它就停止工作了,但我既不知道文档来自何处,也不知道库中有什么东西破坏了我的代码。如果不清楚的话,我很抱歉。我将在几分钟内添加库,使其更加清晰。请检查改进后的问题。对不起,如果不清楚的话。。!。。谢谢你的建议。忘了提了,我已经提过了。:)。正如我在问题中提到的,如果没有JAVA脚本,它可以正常工作。嗯,如果没有“以Web用户身份运行”选项,我会得到与您完全相同的错误消息:-)是的,这是真的,如果没有选择该选项,我们会得到这个错误。然而,我想这是另外一回事。您是否尝试添加外部“JAVA脚本”(“非JAVASCRIPT”)?是的,正是您的示例。您将JAVA类放入
code/JAVA
。您可以通过以下方式从SSJS调用Java类:
var extract\u group=new com.company.ExtractGroup();提取组设置会话(会话)可以作为参数传递的当前文档。是的,我想我错过了。但是没有编译时错误。我一上任就让我核实一下。非常感谢。我不认为这与java遵从性级别有任何关系,因为即使删除该部分,它也不会工作。