首页 > 解决方案 > 在 jar 中包含导入的库

问题描述

在没有 IDE 的情况下无法找到如何做到这一点(没有 IDE 可以做到这一点)。

我有几个库导入到我的代码中,这里有几个例子。

import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.DataFormatter;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;

我有以下文件结构:

我尝试在清单中包含所有 .jar 文件

Main-Class: tdms.rackserials
Class-Path: lib.commons-collections4-4.2.jar lib.commons-compress-1.18.jar lib.json-20180813.jar lib.json-simple-1.1.1.jar lib.poi-4.0.0.jar lib.poi-ooxml-4.0.0.jar lib.poi-ooxml-schemas-4.0.0.jar lib.xmlbeans-3.0.1.jar

但是,如果我将我的 JAR 移动到另一台计算机(没有安装所需的库),则会出错:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/poi/ss/usermodel/WorkbookFactory

我在另一个线程中找到了这个注释.. 那么如何包含其他 JAR 文件(导入的库)以使我的包可移植?

注意:Class-Path 标头指向本地网络上的类或 JAR 文件,而不是 JAR 文件中的 JAR 文件或可通过 Internet 协议访问的类。要将 JAR 文件中的 JAR 文件中的类加载到类路径中,您必须编写自定义代码来加载这些类。例如,如果 MyJar.jar 包含另一个名为 MyUtils.jar 的 JAR 文件,则不能使用 MyJar.jar 清单中的 Class-Path 标头将 MyUtils.jar 中的类加载到类路径中。

标签: javajarmanifest

解决方案


推荐阅读