0

我目前正在用 Java 编写一个程序来从多种文档类型中提取元数据。目前我正在尝试使用 Apache Tika 从 .vsd 文件中提取元数据。我之前尝试过直接使用 Apache POI,但事实上很难找到关于库中这个未使用部分的任何文档,所以我决定使用 Tika。

好的,这是我崩溃的代码示例(在第 7 行崩溃):

        ParseContext context = new ParseContext();
        Metadata metadata = new Metadata();
        WriteOutContentHandler handler = new WriteOutContentHandler(10 * 1024 * 1024);
try {
            FileInputStream fis = new FileInputStream(fileName);
            OfficeParser officeParser = new OfficeParser();
            officeParser.parse(fis, handler, metadata, context);
            String[] metadataNames = metadata.names();

            // Display all metadata
            for (String name : metadataNames) {
                System.out.println(name + ": " + metadata.get(name));
            }
        } catch (FileNotFoundException E) {
            System.out.println("No such files : " + fileName);
        }

这是堆栈跟踪:

线程“main”中的异常 java.lang.RuntimeException: TODO at org.apache.poi.hdgf.HDGFDiagram.(HDGFDiagram.java: 99) 在 org.apache.tika.parser.microsoft.OfficeParser.parse(OfficeParser.java:200) 在 org.apache.tika 的 org.apache.poi.hdgf.extractor.VisioTextExtractor.(VisioTextExtractor.java:55)。 parser.microsoft.OfficeParser.parse(OfficeParser.java:161) 在 VsdFile.displayMetadata(VsdFile.java:43) 在 main.main(main.java:26) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun .reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:601) 在 com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)

我对 Java 很生疏,所以我希望我的问题不是太明显而无法回答。

谢谢你。

问候,

布卢尔

4

1 回答 1

1

所以问题是一个坏的 vsd 文件。

于 2013-01-23T04:40:19.293 回答