Импорт OAI — Dspace

Когда я выполняю команду ./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)

person Catalina    schedule 10.10.2014    source источник
comment
Какая у вас точная версия DSpace? Если это 4.x, то у одного из отправителей ваших элементов может отсутствовать отправитель или у отправителя может отсутствовать адрес электронной почты.   -  person user323094    schedule 21.10.2014
comment
Кто-то любезно отправил для этого запрос на включение: github.com/DSpace/DSpace/pull/933, и я создал задачу в официальной системе отслеживания ошибок DSpace: jira.duraspace.org /browse/DS-2554   -  person schweerelos    schedule 28.04.2015


Ответы (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 использует для установки нуля.

person haydenyoung    schedule 26.04.2015

Разработка комментария пользователя 323094:

Глядя на строку 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.

person Bram Luyten    schedule 16.11.2014