Vert.x集群初始化失败问题:IDEA可运行但Windows CMD执行可执行Jar报错
解决Vert.x集群打包后初始化失败的问题
我之前碰到过完全一样的问题!这是maven-shade-plugin打包时的常见坑——它默认只会合并Manifest文件,没有处理Java SPI(服务提供者接口)的配置文件,导致Infinispan运行时找不到必要的组件,最终抛出NullPointerException。
问题根源
Vert.x集群依赖的Infinispan框架需要通过META-INF/services目录下的配置文件来加载CounterManager等核心组件。在IDEA中运行时,IDE会自动扫描所有依赖中的这些配置文件;但使用maven-shade-plugin打包时,如果不指定对应的Transformer,多个依赖中的META-INF/services文件会被互相覆盖,丢失关键的服务实现配置,从而触发你看到的错误。
解决方案:修改Maven Shade插件配置
在你的maven-shade-plugin配置中添加ServicesResourceTransformer,它会自动合并所有依赖中的SPI配置文件:
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.2.4</version> <configuration> <createDependencyReducedPom>false</createDependencyReducedPom> </configuration> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <transformers> <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer"> <mainClass>${mainClass}</mainClass> </transformer> <!-- 新增:合并所有META-INF/services下的SPI配置文件 --> <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/> </transformers> </configuration> </execution> </executions> </plugin>
验证步骤
- 执行
mvn clean package重新打包你的应用 - 在Windows CMD中运行生成的可执行Jar文件
- 观察日志,集群初始化应该能正常完成,不会再出现
Cannot invoke "org.infinispan.factories.impl.ComponentRef.running()"的错误
内容的提问来源于stack exchange,提问作者user1573049
相关产品推荐
相关产品推荐

