1

当我执行命令 ./dspace oai import -c
我得到以下错误:

OAI 2.0 manager action started
Clearing index
Index cleared
Using full import.
Full import
java.lang.NullPointerException
    at org.dspace.xoai.app.XOAI.index(XOAI.java:275)
    at org.dspace.xoai.app.XOAI.index(XOAI.java:229)
    at org.dspace.xoai.app.XOAI.indexAll(XOAI.java:210)
    at org.dspace.xoai.app.XOAI.index(XOAI.java:128)
    at org.dspace.xoai.app.XOAI.main(XOAI.java:439)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:606)
    at org.dspace.app.launcher.ScriptLauncher.runOneCommand(ScriptLauncher.java:225)
    at org.dspace.app.launcher.ScriptLauncher.main(ScriptLauncher.java:77)
4

2 回答 2

2

如果您已收获被 OAI 索引的项目,那么这些项目将导致异常。问题似乎是 DSpace 在通过收获创建项目时为 submitter_id 设置了无效的空值。

在活跃的档案中没有简单的方法可以解决这个问题。每次收割物品时,您都会遇到此问题。我发现的唯一快速解决方法是直接在数据库中重置 submitter_id 字段的空值:

UPDATE item SET submitter_id = null WHERE submitter_id IS null;

问题不在于 doc.addField 方法,因为正确设置 db null 值将导致 getSubmitter() 方法正确地将 submitter_id 验证为 null,因此 getEmail 不返回任何内容。相反,问题在于 DSpace 用于设置 null 的无效值。

于 2015-04-26T02:35:56.167 回答
1

详细说明 user323094 的评论:

在这里查看第 275 行: https ://github.com/DSpace/DSpace/blob/c5e3b7150a24c669172492ab3dc276111328a865/dspace-oai/src/main/java/org/dspace/xoai/app/XOAI.java

此错误似乎是由以下原因引起的:

doc.addField("item.submitter", item.getSubmitter().getEmail());

所以要么你有一个没有提交者的项目,这意味着getSubmitter导致 NPE,或者有一个提交者,但它没有电子邮件,这意味着这getEmail将触发 NPE。

于 2014-11-16T14:30:33.387 回答