java - 在 Spring Boot 应用程序中打包 Spring 应用程序(JAR)
问题描述
Spring 应用程序“A”打包为 JAR(使用 maven),应用程序“A”的 POM 文件包含一些定义的特定 maven 依赖项。
在另一个打包为 JAR 的 spring boot 应用程序“B”中,添加了应用程序“A”的依赖项,但是在执行“B”时,它会为应用程序“A”中提到的依赖项抛出很少的 ClassNotFound/NoClassDef 错误。
注意 - 应用程序“A”不是引导项目。这是一个使用 maven 构建的简单 Spring 应用程序。
请协助。如果我需要分享任何代码,请告诉我。提前致谢。
解决方案
Spring boot jar 并不是真正的 jar,它是这里的核心问题。为方便起见,它只打包为 jar,但如果您打开它(使用 WinRaR/WinZip 或任何其他程序),您会看到它没有 JAR 结构,例如,所有依赖项都包含在 JAR 中(请参阅 BOOT-INF/lib)。
因此,底线是,如果 A 和 B 都是 Spring Boot 应用程序,则您不能在它们之间建立依赖关系,它将无法工作。
作为一种解决方案,考虑将应该共享的代码提取到第三个模块“C”中,该模块将具有打包 jar,但其本身不会是 Spring Boot 应用程序。
之后让 A 和 B 都依赖于 C 并且你设置好了
推荐阅读
- search - 如何搜索“网页内容内部”的文本?
- php - macOS:从 PHP 中使用 pbcopy 不起作用
- ios - 如何将文件名传递给另一个 ViewController?
- agora.io - Agora.io : 使用 timeout 或 api 关闭未使用的频道
- flutter - 在颤动中使用更改通知器时监听属性
- reactjs - 使用反应导航添加后退按钮
- java - Firestore:仅当有更新时才从服务器获取数据,否则从缓存中获取
- python - 如何在 python 的 100x100 零矩阵中定期添加元素?
- jquery - .keyup 函数没有被触发
- fullcalendar - Fullcalendar - 是否可以在 resourceTimelineMonth 视图中设置日单元格内容 html?