将嵌套的jar添加到类路径中

时间:2015-06-18 18:58:50

标签: java jar classpath executable-jar manifest.mf

Java documentation包含有关将嵌套jar添加到类路径中的注释。

  

将JAR文件中的JAR文件中的类加载到类路径中,   你必须编写自定义代码来加载这些类。

有很多工具可以执行此操作,例如herehere列出的工具。

  1. 这些工具是否可以通过从嵌套jar中提取类并将提取路径添加到类路径中来实现?或者它只是简单地解压缩档案?
  2. manifest.mf类路径可以指向本地文件系统但不在其自己的存档中的限制是否存在技术原因?

1 个答案:

答案 0 :(得分:0)

如果您使用Maven,另一个选项是Shade Mojo。它将爆炸所有JAR,允许其内容与您的代码打包在一起。它还具有其他魔力,例如将依赖项移动到自定义包中以避免冲突并合并META-INF中的文件。

其中一个主要问题是,JAR通常会在完全相同的位置暴露工件。对于允许通过ServiceLoader进行扩展的(通常是JDK)系统,这可能会有问题。这些文件需要智能地合并/连接。

可能以微妙的,可能导致错误的方式实现的另一个API是ClassLoader.getResources(String)

如果您使用SecrutiyManager,安全域可能会变得更复杂。

tl; dr 这是一个主要由ClassLoading API驱动的限制