Class OSGi重启:是否考虑修改类文件? 当重新启动时,OSGi包会考虑其更改的类文件吗?我的意图是停止一个捆绑包,更改它的java文件,编译它,然后重新启动捆绑包。它是否包含新类,或者我是否需要以某种方式更新包

Class OSGi重启:是否考虑修改类文件? 当重新启动时,OSGi包会考虑其更改的类文件吗?我的意图是停止一个捆绑包,更改它的java文件,编译它,然后重新启动捆绑包。它是否包含新类,或者我是否需要以某种方式更新包,class,compilation,osgi,osgi-bundle,Class,Compilation,Osgi,Osgi Bundle,这两条线索让我想到了这个想法: 和 我很高兴能得到帮助。谢谢。必须刷新或更新捆绑包才能获得新的类加载器。只需重新启动捆绑包,就会使用当前的类加载器,而当前的类加载器仍将加载原始类。为什么要这样做?像其他人那样做,使用并安装新版本,卸载旧版本并刷新。(如果您使用的是Karaf和Maven,您可以简单地创建捆绑包,并在它发生变化时自动为您进行更新)。由于性能要求,将自动建立动态映射器类。我知道这是一个非常特殊的情况,但对于这项工作来说是必要的。每次在基于事件的系统中有新的一方时,该类都需要更新。。

这两条线索让我想到了这个想法: 和


我很高兴能得到帮助。谢谢。

必须刷新或更新捆绑包才能获得新的类加载器。只需重新启动捆绑包,就会使用当前的类加载器,而当前的类加载器仍将加载原始类。

为什么要这样做?像其他人那样做,使用并安装新版本,卸载旧版本并刷新。(如果您使用的是Karaf和Maven,您可以简单地创建捆绑包,并在它发生变化时自动为您进行更新)。由于性能要求,将自动建立动态映射器类。我知道这是一个非常特殊的情况,但对于这项工作来说是必要的。每次在基于事件的系统中有新的一方时,该类都需要更新。。。你不想用手做这个。。。您的语义版本控制链接给了我一个404 btw.re:404。如果我担心性能,我不会选择需要在运行时进行修改和编译的设计。“每次在基于事件的系统中有新的一方时,类都需要更新”这是一种主要的设计气味,您的代码违反了。可能是有误解。在系统启动后,没有多少参与方加入。因此,使用类中的方法进行映射比每次事件发生时从数据库中查找信息要快。。。无论如何,我想知道你的方法是什么…谢谢你的回答。因此,即使类文件被替换,它仍然在内存中保留旧的类文件?这个过程到底是如何运作的?那么,以编程方式更新捆绑包是一种解决方案吗?(停止bundle,以编程方式更新内容,更新bundle,启动bunde)这可能吗?只需更换bundle jar并以编程方式更新bundle。