我尝试使用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
如何解决这个问题?
答案 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);