Serialization ream().forEach(实例->{ log.info(“注册的Hazelcast OSGI实例:{}”,Instance.getName()); }); clusterManager=新的HazelcastClusterManager(hazelcastOSGiInstance); VertxOptions options=new VertxOptions().setClusterManager(clusterManager).setHAGroup(“effectus”); Vertx.clusteredVertx(选项,分辨率->{ 如果(res.successed()){ Vertx v=分辨率结果(); info(“Vertx正在集群模式下运行:{}”,v); //更多的代码。。。

Serialization ream().forEach(实例->{ log.info(“注册的Hazelcast OSGI实例:{}”,Instance.getName()); }); clusterManager=新的HazelcastClusterManager(hazelcastOSGiInstance); VertxOptions options=new VertxOptions().setClusterManager(clusterManager).setHAGroup(“effectus”); Vertx.clusteredVertx(选项,分辨率->{ 如果(res.successed()){ Vertx v=分辨率结果(); info(“Vertx正在集群模式下运行:{}”,v); //更多的代码。。。,serialization,osgi,hazelcast,vert.x,karaf,Serialization,Osgi,Hazelcast,Vert.x,Karaf,``` 所以问题是hazelcast实例无法访问vertx hazelcst捆绑包中的cleasass 我相信在某个地方有一条更短更干净的路 任何更好的建议都会很好。谢谢@noctarius,我只使用vertx内部使用的hazelcast 3.6.3。即使集群中只有一个节点,也会发生此错误。这只发生在Karaf/OSGi上,因此我认为可以安全地假设vertx或hazelcast不是故障,只是Karaf上的组合不起作用g、 可能,我必须亲自调查一下。我从来没有在卡拉夫上尝试过vertx。

```

所以问题是hazelcast实例无法访问vertx hazelcst捆绑包中的cleasass

我相信在某个地方有一条更短更干净的路


任何更好的建议都会很好。

谢谢@noctarius,我只使用vertx内部使用的hazelcast 3.6.3。即使集群中只有一个节点,也会发生此错误。这只发生在Karaf/OSGi上,因此我认为可以安全地假设vertx或hazelcast不是故障,只是Karaf上的组合不起作用g、 可能,我必须亲自调查一下。我从来没有在卡拉夫上尝试过vertx。
    <bundle start-level="80">wrap:mvn:io.vertx/vertx-hazelcast/${vertx.version}</bundle>
            .setClassLoader(HazelcastClusterManager.class.getClassLoader())
    log.info("Hazelcast OSGi Service Reference: {}", serviceRef);
    hazelcastOsgiService = context.getService(serviceRef);
    log.info("Hazelcast OSGi Service: {}", hazelcastOsgiService);

    hazelcastOsgiService.getClass().getClassLoader();

    Map<String, SemaphoreConfig> semaphores = new HashMap<>();
    semaphores.put("__vertx.*", new SemaphoreConfig().setInitialPermits(1));

    Config hazelcastConfig = new Config("effectus-instance")
            .setClassLoader(HazelcastClusterManager.class.getClassLoader())
            .setGroupConfig(new GroupConfig("dev").setPassword("effectus"))
            //                .setSerializationConfig(new SerializationConfig().addClassDefinition()
            .addMapConfig(new MapConfig()
                    .setName("__vertx.subs")
                    .setBackupCount(1)
                    .setTimeToLiveSeconds(0)
                    .setMaxIdleSeconds(0)
                    .setEvictionPolicy(EvictionPolicy.NONE)
                    .setMaxSizeConfig(new MaxSizeConfig().setSize(0).setMaxSizePolicy(MaxSizeConfig.MaxSizePolicy.PER_NODE))
                    .setEvictionPercentage(25)
                    .setMergePolicy("com.hazelcast.map.merge.LatestUpdateMapMergePolicy"))
            .setSemaphoreConfigs(semaphores);

    hazelcastOSGiInstance = hazelcastOsgiService.newHazelcastInstance(hazelcastConfig);
    log.info("New Hazelcast OSGI instance: {}", hazelcastOSGiInstance);
    hazelcastOsgiService.getAllHazelcastInstances().stream().forEach(instance -> {
        log.info("Registered Hazelcast OSGI Instance: {}", instance.getName());
    });

    clusterManager = new HazelcastClusterManager(hazelcastOSGiInstance);
    VertxOptions options = new VertxOptions().setClusterManager(clusterManager).setHAGroup("effectus");

    Vertx.clusteredVertx(options, res -> {
        if (res.succeeded()) {
            Vertx v = res.result();
            log.info("Vertx is running in cluster mode: {}", v);

 // some more code...