将整个JDK8包含在OSGI包中,并部署在运行在JDK9(或更高版本)环境上的OSGI上

将整个JDK8包含在OSGI包中,并部署在运行在JDK9(或更高版本)环境上的OSGI上,osgi,osgi-bundle,uberjar,fatjar,Osgi,Osgi Bundle,Uberjar,Fatjar,我曾经作为一名基于OSGI的AEM开发人员工作过一些,这就是我的基本想法(有点过时)的来源。在一个新的工作和完全非AEM相关的项目,这里是我需要做的 基于兼容的第三方库构建服务库 JDK8 将它们部署为tomcat上的SpringWeb应用程序,运行在JDK9或更高版本上 第三方库是许可软件,由于某些法律僵局,无法升级。由于JavaAPI问题,JDK9上的直接部署失败 理论是将整个JDK8运行时作为捆绑依赖项包括在内,并将其作为OSGI捆绑包部署在符合JDK9+的OSGI上 运行时框架。 下

我曾经作为一名基于OSGI的AEM开发人员工作过一些,这就是我的基本想法(有点过时)的来源。在一个新的工作和完全非AEM相关的项目,这里是我需要做的

  • 基于兼容的第三方库构建服务库 JDK8
  • 将它们部署为tomcat上的SpringWeb应用程序,运行在JDK9或更高版本上
第三方库是许可软件,由于某些法律僵局,无法升级。由于JavaAPI问题,JDK9上的直接部署失败

理论是将整个JDK8运行时作为捆绑依赖项包括在内,并将其作为OSGI捆绑包部署在符合JDK9+的OSGI上 运行时框架。

下面是我创建的一个小图表,它捕捉了主要思想:

这可能有效吗?理论上,这是因为每个OSGI包都使用自己的类加载器,所以第三方库不应该因为JavaAPI问题而中断。此外,计划使用maven创建一个胖(uber)罐

另一个困扰我的问题是:创建一个包含JDK的uber jar是一件事吗?我以前创建过uber JAR,但不确定如何包括JDK。有些地方似乎不对劲。有什么建议吗


谢谢大家

不能从一个JDK实现中打包JDK类库,然后在另一个JDK实现中使用它们。即使你把它们捆起来。JDK类库与底层JVM实现紧密相连,并且存在许多预期的单例,如果存在多个JDK类库,将违反这些单例