java - 在 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;
我有以下文件结构:
- 根目录 = RackSerials
- sub dir lib - 包含所有 .jar 导入文件
- 子目录tdms - 我所有的 .class 文件
我尝试在清单中包含所有 .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 中的类加载到类路径中。
解决方案
推荐阅读
- sql-server - 使 GroupBy 查询区分大小写
- kubernetes - 当 ReplicaSet=2 时发现+请求 Kubernetes 上的 Kafka Streams 实例
- python - 按年份对数据框进行分组以绘制较小的图表
- python - Cloud Composer / Airflow:只能在 Operator 之间设置关系;收到 PythonOperator
- regex - 如何使用 grep 查找 3 位数字且仅 3 位数字?
- docker - 使 NFS 共享在 Openstack 上运行的 Kubernetes pod 中可见
- php - Laravel Horizon 队列处理,但未收到预期结果
- python - Windows 10 - python pip 不工作(添加了环境变量)
- html - 有没有办法只拆分一些标签垂直分成两列?
- karate - $符号在空手道框架中有什么用?