为什么我会得到;javax.jcr.PathNotFoundException“;AEM上何时存在路径?

为什么我会得到;javax.jcr.PathNotFoundException“;AEM上何时存在路径?,java,aem,jcr,Java,Aem,Jcr,我正在尝试将模板的节点树复制到名为“root”的节点,如下所示: Workspace workspace = session.getWorkspace(); workspace.copy(templatePath + "/initial/jcr:content/root", contentNode.getPath() + "/root"); Node rootNode = contentNode.getNode("root");

我正在尝试将模板的节点树复制到名为“root”的节点,如下所示:

Workspace workspace = session.getWorkspace();
workspace.copy(templatePath + "/initial/jcr:content/root", contentNode.getPath() + "/root");    
Node rootNode = contentNode.getNode("root");
templatePath是指向模板的字符串。我正在尝试复制模板路径下的“/initial/jcr:content/root”,并将其粘贴到节点contentNode下名为“root”的子节点。 我运行了上面的代码,在最后一行得到了javax.jcr.PathNotFoundException。当我在AEM上转到CrxDe时,节点树已被复制和粘贴,尽管我收到了错误消息,但路径实际上存在。我试图补充

  session.save();
我抄完之后。但相同的错误仍然存在,尽管节点存在并且已被复制


原因是什么?

在再次使用
contentNode
之前,请尝试添加
会话。刷新()

在再次使用
contentNode
之前,请尝试添加
会话。刷新()
而不是
会话。保存()

在再次使用
contentNode
之前,请尝试添加
会话。刷新()
“AEM”,如“Adobe体验云”(我不得不用谷歌搜索)?Adobe Experience Manager不需要在
工作区之后保存
,复制
,因为它不会在会话上运行,并且会立即应用更改。但是,您拥有的
contentNode
是当前会话的一部分,因此它可能不是最新的(或者它会缓存其子项列表)。如果
Session#refresh
不起作用,只需再次尝试解析节点。“AEM”,如“Adobe体验云”(我不得不用谷歌搜索)?Adobe Experience Manager无需
会话#在
工作区#复制
后保存
,因为它不会对会话进行操作,并且会立即应用更改。但是,您拥有的
内容节点
是当前会话的一部分,因此它可能不是最新的(或者它会缓存其子项列表)。如果
Session#refresh
没有帮助,请重新尝试解析节点。