在 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)需要压缩 .jar
和 lib
文件夹,解压缩压缩文件,提取内容,然后从提取到的位置 运行。
但是 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-core
和 tika-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
。
我在外部库方面运气不佳,所以我只是在任何使用实用程序的项目中包含了实用程序的源代码。
现在我有一个需要 Apache Tika 的项目,所以我必须有一个像这样的库设置:
但是对于来自 Netbeans 外部的 运行 程序,我显然(根据 dist
文件夹中的 readme.txt)需要压缩 .jar
和 lib
文件夹,解压缩压缩文件,提取内容,然后从提取到的位置 运行。
但是 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-core
和 tika-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
。