tika.parseToString 返回空字符串

问题描述 投票:0回答:1

为什么下面的应用程序不会打印文件内容?

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>
java maven apache-tika
1个回答
2
投票

TL;博士

这些是

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配置但不幸的是它不完整。

怀疑您没有看到异常,因为当未加载解析器时Tika回落到

EmptyParser
。它在后台创建一个空的 XHTML 文档,这样的文档没有文本内容。因此,您的代码输出一个空字符串。

© www.soinside.com 2019 - 2024. All rights reserved.