我已经将OSS项目(https://m-m-m.github.io)完全迁移到JPMS(模块)。但是,现在与spring-boot集成给了我很多困难。 首先,我偶然发现了slf4j模块支持的各种问题:
但是现在我完全陷入了这样的错误:
[ERROR] error: the unnamed module reads package javax.servlet from both org.apache.tomcat.embed.core and java.servlet
在模块内部,我被迫要求使用我正在使用的代码,并且无法从类路径/未命名的模块中访问代码。因此,我被迫使用servlet-api和slf4j的模块化版本。 但是,spring-boot使用的是tomcat-embed,它包含servlet-api,但未使用JakartaEE的官方JPMS模块。我什至尝试更新到tomcat 10.0.0-M4,但是spring-boot尚不支持此功能:
NoSuchMethodError: 'void org.apache.catalina.Context.addServletContainerInitializer(javax.servlet.ServletContainerInitializer, java.util.Set)'
还有什么魔术可以解决这样的问题?还是JPMS是一家封闭商店,并且由于Java生态系统的发展速度不够快(多年来Java9已于2017年发布),我多少被迫重新发明轮子,并用模块化代码替换所有此类东西?