我按照tika指南完成了以下步骤:
我在尝试运行tika时遇到了这个运行时异常:
Exception in thread "main" java.lang.NoClassDefFoundError: org.apache.pdfbox.pdmodel.encryption.InvalidPasswordException
at com.ibm.hrl.ace.pdftotext.TikaExtracter.parse(TikaExtracter.java:33)
at com.ibm.hrl.ace.pdftotext.Main.AllPdfsToText(Main.java:116)
at com.ibm.hrl.ace.pdftotext.Main.main(Main.java:34)
Caused by: java.lang.ClassNotFoundException: org.apache.pdfbox.pdmodel.encryption.InvalidPasswordException
at java.net.URLClassLoader.findClass(URLClassLoader.java:600)
at java.lang.ClassLoader.loadClassHelper(ClassLoader.java:786)
at java.lang.ClassLoader.loadClass(ClassLoader.java:760)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:326)
at java.lang.ClassLoader.loadClass(ClassLoader.java:741)
... 3 more
据我所知,当我使用maven构建jar时,它会在构建日志中正确添加pdfbox:
[INFO] Including org.apache.pdfbox:pdfbox:jar:2.0.1 in the shaded jar.
[INFO] Including org.apache.pdfbox:fontbox:jar:2.0.1 in the shaded jar.
[INFO] Including org.apache.pdfbox:pdfbox-tools:jar:2.0.1 in the shaded jar.
[INFO] Including org.apache.pdfbox:pdfbox-debugger:jar:2.0.1 in the shaded jar.
[INFO] Including org.apache.pdfbox:jempbox:jar:1.8.12 in the shaded jar.
这是我的maven依赖项:
<dependencies>
<!-- https://mvnrepository.com/artifact/org.apache.tika/tika-core -->
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-core</artifactId>
<version>1.13</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.tika/tika-parsers -->
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-parsers</artifactId>
<version>1.13</version>
</dependency>
</dependencies>
答案 0 :(得分:4)
问题在于,如果在构建路径中手动添加tika-core和tika-parsers jar,则不会在自己的POM中列出传递依赖项。
所以我建议:
(选项A,使用Maven)不要手动添加到Eclipse构建路径中的jar。依赖于Eclipse的内置Maven插件(例如m2e)或者使用Eclipse插件作为maven(调用mvn eclipse:eclipse来更新.classpath和.project)。
(选项B,没有Maven)如果您不能将Maven用于您的项目,则不仅需要添加tika-parsers和tika-core jar,还需要添加这些项目所需的所有(大部分)传递依赖项(包括例如,每种格式的特定库[适用于Office的POI,适用于PDF的pdfbox ...)。您可以通过在包含tika-parser pom的文件夹中键入mvn dependency:list
来获取依赖项列表。