我曾经作为一名基于OSGI的AEM开发人员工作,这是我的基本(有点过时)想法的源头。在一项新的工作以及与AEM完全无关的项目上,这是我需要做的。
第三方库是许可软件,由于某些法律上的僵局而无法升级。由于Java API问题,在JDK9上进行直接部署失败。
理论是将整个JDK8运行时包含为捆绑的依赖项,并将其作为OSGI捆绑包部署在符合JDK9 +的OSGI上运行时框架。
这可能有效吗?从理论上讲,这是因为每个OSGI捆绑包都使用自己的类加载器,因此第3方库不应因为Java API问题而中断。此外,计划是使用Maven创建一个胖(超级)罐子。
另一个困扰我的问题:创建一个包括JDK的超级jar还是一件事情吗?我之前已经创建了uber-jars,但不确定如何将JDK也包括在内。其中的某些部分似乎不正确。有什么建议吗?
谢谢大家!
您不能从一个JDK实现中打包JDK类库,而在另一个JDK实现中使用它们。即使将它们捆绑在一起。 JDK类库与底层JVM实现紧密相连,并且存在许多预期的单例,这些单例存在多个JDK类库会违反。