【问题标题】:i'm trying restore an community with dspace packager我正在尝试使用 dspace packager 恢复社区
【发布时间】:2017-08-16 09:30:57
【问题描述】:

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

返回此错误:

这可能需要一段时间,请检查您的日志以了解当前状态 我们处理每个包裹。 org.dspace.content.crosswalk.MetadataValidationException:错误号码 PREMIS object/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.AbstractMETSIgester.addBitstreams(AbstractMETSIgester.java:814) 在 org.dspace.content.packager.AbstractMETSIngester.ingestObject(AbstractMETSIgester.java:494) 在 org.dspace.content.packager.AbstractMETSIgester.ingest(AbstractMETSIgester.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) 在 org.dspace.app.packager.Packager.main(Packager.java:427) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 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) 在 java.lang.Integer.parseInt(Integer.java:615) 在 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

【问题讨论】:

    标签: dspace


    【解决方案1】:

    该数字适合 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);
    

    【讨论】:

    • 由于系统处于危急状态,因系统不可用需要及时恢复社区。我最终对文件进行了备份,并在恢复正常工作时将其删除。我会做一个新的备份模拟,我会尝试在社区中恢复它并报告问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多