我正在尝试访问打包为库的类文件,但不幸的是,JAR库应该打包在另一个JAR文件中。
举个例子,假设我有一个包含一些类库的a.jar文件。我可以从我的外部Java应用程序中调用(导入)JAR文件中的类。现在,我需要将这个a.jar放在另一个JAR文件b.jar中,并且需要从b.jar的外部访问(导入)a.jar中的类。
我正在尝试访问打包为库的类文件,但不幸的是,JAR库应该打包在另一个JAR文件中。
举个例子,假设我有一个包含一些类库的a.jar文件。我可以从我的外部Java应用程序中调用(导入)JAR文件中的类。现在,我需要将这个a.jar放在另一个JAR文件b.jar中,并且需要从b.jar的外部访问(导入)a.jar中的类。
您需要编写一个能够处理“嵌套JAR包”的类加载器。对我来说,这听起来像一个非常糟糕的想法。
不要合并JAR文件-只需将它们分别存储在磁盘上即可。我知道您可能需要说服管理层有更多文件的必要性,但这确实会使一切变得更加简单。编写类加载器并不是一件简单的事情...
假设您有A.jar中的一些核心内容和B.jar中的一些库。您可以像这样执行程序(在Windows上用;替换:):
java -cp A.jar:B.jar main.class.Name args
main.class.Name
是你的主类名,args
则是你所有命令行参数的位置。
你也可以在你的 manifest.mf
中添加 Main-Class
和 Class-Path
属性,像这样:
Class-Path: B.jar
Main-Class: main.class.Name
然后你可以像这样执行程序:
java -jar A.jar args
Class-Path
清单属性,我可以分发可以像单个JAR文件一样执行的应用程序(在某些系统上双击或简单的"java -jar
"命令),但通过不传输所有重复库来节省大量时间和带宽,以后的软件发布。lib
),并修改Class-Path
,使所有JAR路径看起来像"lib/B.jar
"。然后您不会让主程序目录充满许多小型JAR文件。