我尝试使用dspace packager恢复社区

时间:2017-03-23 17:09:27

标签: dspace

我尝试使用dspace packager -r -s -k -a -t AIP恢复社区

返回此错误:

  

这可能需要一段时间,请检查您的日志,了解正在进行的状态   我们处理每个包。   org.dspace.content.crosswalk.MetadataValidationException:错误号码   PREMIS对象/ objectCharacteristics / size中的值:2237780334 at   org.dspace.content.crosswalk.PREMISCrosswalk.ingest(PREMISCrosswalk.java:122)     在   org.dspace.content.crosswalk.PREMISCrosswalk.ingest(PREMISCrosswalk.java:88)     在   org.dspace.content.packager.METSManifest.crosswalkXmd(METSManifest.java:1193)     在   org.dspace.content.packager.METSManifest.crosswalkBitstream(METSManifest.java:1310)     在   org.dspace.content.packager.AbstractMETSIngester.addBitstreams(AbstractMETSIngester.java:814)     在   org.dspace.content.packager.AbstractMETSIngester.ingestObject(AbstractMETSIngester.java:494)     在   org.dspace.content.packager.AbstractMETSIngester.ingest(AbstractMETSIngester.java:228)     在   org.dspace.content.packager.AbstractPackageIngester.ingestAll(AbstractPackageIngester.java:145)     在   org.dspace.content.packager.AbstractPackageIngester.ingestAll(AbstractPackageIngester.java:195)     在   org.dspace.content.packager.AbstractPackageIngester.ingestAll(AbstractPackageIngester.java:195)     在org.dspace.app.packager.Packager.ingest(Packager.java:515)at   org.dspace.app.packager.Packager.main(Packager.java:427)at   sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at   sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)     在   sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     在java.lang.reflect.Method.invoke(Method.java:498)at   org.dspace.app.launcher.ScriptLauncher.runOneCommand(ScriptLauncher.java:226)     在   org.dspace.app.launcher.ScriptLauncher.main(ScriptLauncher.java:78)   引起:java.lang.NumberFormatException:对于输入字符串:   " 2237780334"在   java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)     在java.lang.Integer.parseInt(Integer.java:583)at   java.lang.Integer.parseInt(Integer.java:615)at   org.dspace.content.crosswalk.PREMISCrosswalk.ingest(PREMISCrosswalk.java:112)     ... 17更多org.dspace.content.crosswalk.MetadataValidationException:   PREMIS对象/ objectCharacteristics / size中的错误数值:   2237780334

如何解决这个问题?

https://github.com/DSpace/DSpace/blob/master/dspace-api/src/main/java/org/dspace/content/crosswalk/PREMISCrosswalk.java

1 个答案:

答案 0 :(得分:2)

该数字适合Long而不是Integer,因此Integer.parseInt会抛出NumberFormatException。基本上,对象太大,无法根据实际比特流检查其声明的大小。代码是错误的:Bitstream.getSize返回一个long,足够大到仅仅几十亿,并且应该与Long进行比较。 PREMISCrosswalk应该使用Long.parseLong。请在https://jira.duraspace.org/提交一个问题,包括您在上面显示的堆栈跟踪,和/或此问题的链接。感谢您提醒我们注意这个问题。

如果您愿意,您应该能够通过修补该单行(PREMISCrosswalk.java:112)来改变它来解决这个问题

int size = Integer.parseInt(ssize);

long ssize = Long.parseLong(ssize);