JCRExportCommand execute() 在 magnolia cms 中抛出异常错误

Posted

技术标签:

【中文标题】JCRExportCommand execute() 在 magnolia cms 中抛出异常错误【英文标题】:JCRExportCommand execute() throws exception error in magnolia cms 【发布时间】:2019-12-02 11:37:17 【问题描述】:

我想在我的本地文件夹中为我执行自定义操作的节点创建一个 YAML 导出文件。下面的代码给了我 NullPointerException:

java.lang.NullPointerException at java.util.Hashtable.get(Hashtable.java:364) info.magnolia.repository.WorkspaceMapping.getWorkspaceMapping(WorkspaceMapping.java:124) info.magnolia.repository.DefaultRepositoryManager.getSession(DefaultRepositoryManager.java:308) info.magnolia.context.DefaultRepositoryStrategy.internalGetSession(DefaultRepositoryStrategy.java:61) info.magnolia.context.AbstractRepositoryStrategy.getSession(AbstractRepositoryStrategy.java:75) info.magnolia.context.AbstractContext.getJCRSession(AbstractContext.java:124) info.magnolia.importexport.command.JcrExportCommand.execute(JcrExportCommand.java:117) ch.xxx.module.versioning.MyAction.execute(MyAction.java:60)

public class MyAction extends AbstractMultiItemAction<xxxVersioning>  


public MyAction(xxxVersioning definition, JcrItemAdapter item, UiContext uiContext) 
    super(definition, item, uiContext);
    // TODO Auto-generated constructor stub




@Override
public void execute() 

    //export nodes from a JCR workspace
    JcrExportCommand exporter = new JcrExportCommand();
    //sets export format to yaml
    exporter.setFormat("yaml");


    //setup the root directory for exports
    File rootDir = new File("/Users/asusti/Downloads/yamlExport");
    // clean up first
    rootDir.delete();
    rootDir.mkdirs();

    //get root node
    Node node = (Node) getItems().get(0).getJcrItem();
    try 
        exporter.setPath(node.getPath());
        File file = new File(rootDir+node.getName()+".yaml");
        FileOutputStream out = new FileOutputStream(file);
        exporter.setOutputStream(out);
        exporter.execute(MgnlContext.getInstance());
     catch (Exception e) 
        // TODO Auto-generated catch block
        e.printStackTrace();
    

在执行之前,我是否必须为导出器设置一些其他方法?

【问题讨论】:

【参考方案1】:

您必须通过JcrExportCommand#setRepository() 设置要导出的工作区的名称。例如

exporter.setRepository("website");

导出网站工作区。

【讨论】:

以上是关于JCRExportCommand execute() 在 magnolia cms 中抛出异常错误的主要内容,如果未能解决你的问题,请参考以下文章

警告:PDOStatement::execute() [pdostatement.execute]: SQLSTATE[HY093]: Invalid parameter number: parame

使用 execute() 执行多个 SQL 语句

execute和submit的区别与联系

[Python] Execute a Python Script

ExecutorService.execute()

ThreadPoolExecutor线程池execute和submit的区别