在 Netbeans 8.0.2 和 Java 8 中使用 Apache Tika 1.9 会生成巨大的可执行文件。怎么做才能缩小尺寸?

Using Apache Tika 1.9 in Netbeans 8.0.2 and Java 8 produces HUGE executable. What to do to reduce size?

我在外部库方面运气不佳,所以我只是在任何使用实用程序的项目中包含了实用程序的源代码。

现在我有一个需要 Apache Tika 的项目,所以我必须有一个像这样的库设置:

但是对于来自 Netbeans 外部的 运行 程序,我显然(根据 dist 文件夹中的 readme.txt)需要压缩 .jarlib文件夹,解压缩压缩文件,提取内容,然后从提取到的位置 运行。

但是 Tika 库是 45MB。

我只使用 tika-app-1.9.jar 库文件中的 5 个对象:

import org.apache.tika.exception.TikaException;
import org.apache.tika.metadata.Metadata;
import org.apache.tika.mime.MimeTypeException;
import org.apache.tika.parser.AutoDetectParser;
import org.apache.tika.sax.BodyContentHandler;

如何将一小部分 Tika 对象制作成一个比 45MB 小得多的库?

或者我错过了我应该做什么的重点?

您应该只包含 tika-coretika-parsers 组件,这两个文件不应超过 1.2MB。

tika-app jar 在主页上是这样描述的:

Tika application. Combines the above components and all the external parser libraries into a single runnable jar with a GUI and a command line interface.

所以它有很多你的应用程序不需要的额外东西。

长久以来 运行 最好迁移到 maven 或类似的东西。然后排除不必要的依赖。例如。如果您不需要使用 NetCDF 库解析的科学格式,您可以排除它:

<dependency>
  <groupId>org.apache.tika</groupId>
  <artifactId>tika-parsers</artifactId>
  <version>1.10</version>
  <exclusions>
    <exclusion>
      <groupId>edu.ucar</groupId>
      <artifactId>netcdf</artifactId>
    </exclusion>
  </exclusions>
</dependency>

但要小心,如果您排除了您使用的解析器所需的某些内容,可能会导致 NoClassDefFoundError