为什么下面的应用程序不会打印文件内容?
package org.example;
import org.apache.tika.Tika;
import java.io.File;
public class TikaFirstTry {
public static void main(String[] args) throws Exception {
Tika tika = new Tika();
for (String fileName : args){
System.out.println(fileName);
String text = tika.parseToString(new File(fileName));
System.out.println("text is: " + text);
}
}
}
文件foo.txt包含:
pizzaaaaa
程序输出为:
C:/Users/me/Desktop/foo.txt
text is:
并且没有抛出异常......
我的 pom 包含
<dependencies>
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-async-cli</artifactId>
<version>2.7.1-SNAPSHOT</version>
</dependency>
</dependencies>
这些是
dependency
中的相关 pom.xml
部分,这是运行您的示例所必需的:
<project>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-bom</artifactId>
<version>2.7.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-async-cli</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-parsers-standard-package</artifactId>
</dependency>
</dependencies>
</project>
首先,正如@khmarbaise 所注意到的,您的
tika-async-cli
依赖版本看起来有问题。截至2月26日,神器tika-async-cli
只有两个版本可供下载:2.6.0
和2.7.0
。您共享的版本不在列表中,mvn install
在尝试从 Maven Central 获取该版本时抛出错误。
你需要
tika-core
和 tika-parsers-*
依赖来运行你的例子。
您已经包含了
tika-core
,因为tika-async-cli
将其作为直接依赖项包含:
$ mvn dependency:tree
# ...
[INFO] +- org.apache.tika:tika-async-cli:jar:2.7.0:compile
[INFO] | +- org.apache.tika:tika-core:jar:2.7.0:compile
[INFO] | | \- commons-io:commons-io:jar:2.11.0:compile
[INFO] | +- org.apache.logging.log4j:log4j-core:jar:2.19.0:compile
[INFO] | | \- org.apache.logging.log4j:log4j-api:jar:2.19.0:compile
[INFO] | \- org.apache.logging.log4j:log4j-slf4j2-impl:jar:2.19.0:compile
# ...
正如@Gagravarr 所暗示的,您的
tika-parsers-*
部分中缺少一个dependencies
。目前这些来自 3 个独立的依赖项:
tika-parsers-standard-package
,tika-parser-scientific-module
,tika-parser-sqlite3-module
.据我所知,这与 Tika 2.0 一起出现(更多信息 here)。对于您的目的,
tika-parsers-standard-package
似乎就足够了。
https://github.com/apache/tika自述文件在某种程度上提出了Maven配置但不幸的是它不完整。
EmptyParser
。它在后台创建一个空的 XHTML 文档,这样的文档没有文本内容。因此,您的代码输出一个空字符串。