ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

CRMEB Java 版部署踩坑记录:从 JDK 17 起不来到完整跑通

CRMEB Java 版部署踩坑记录:从 JDK 17 起不来到完整跑通 一句话结论这个项目的环境要求是 JDK 1.8、MySQL 5.7、Redis 5、Maven 3.6.1、Node.js 14、npm 6。如果你本地是 JDK 17直接起不来必须降到 JDK 8。这是最容易卡住人的一步我在这上面浪费了半天。下面是完整的部署流程和我踩的六个坑按照这个顺序走正常一两个小时能跑通。环境准备先对版本别急着 clone官方要求的环境清单组件版本要求我实际用的JDK1.81.8.0_351Maven3.6.13.6.1MySQL5.75.7.36Redis55.0.14Node.js1414.19.0npm66.14.16建议在动手前先把这张表核对一遍尤其是 JDK 和 Node。我就是没看直接 clone 完mvn install然后开始排查各种莫名其妙的编译错误最后发现是 JDK 版本的问题。多说一句版本管理的事如果你机器上要同时跑好几个项目装个 JDK 版本管理工具jenv、sdkmanWindows 上手动配 JAVA_HOME 切换也行比每次卸载重装省事得多。项目结构先搞清楚再动手clone 下来之后先花五分钟看目录能省后面很多时间crmeb/ 后端 API 服务 ├── crmeb-admin 后台管理 API ├── crmeb-front 前端C 端API ├── crmeb-common 公共工具类与组件 └── crmeb-service 业务服务层 admin/ PC 管理后台Vue Element UI app/ 移动端uni-app icons/ 基础素材、分类图标几个要点后端是两个独立的服务。crmeb-admin是后台管理的 APIcrmeb-front是 C 端的 API各自有各自的启动类和端口。第一次部署要起两个我一开始只起了 admin然后纳闷为什么小程序端接口全是 404。crmeb-common和crmeb-service不需要单独启动它们是被前两个依赖的模块。前端也是两套。admin/是 PC 管理后台Vue 2 Element UIapp/是 uni-appH5、小程序、公众号、APP 从这一套编译出去。这个分层我个人是比较认的加接口的时候知道往哪儿放不用满项目 grep。对比我之前接手过的那种「所有 Controller 全在一个 module 里按功能包分」的项目定位速度不是一个量级。后端启动流程第一步建库导数据MySQL 建一个空库字符集选utf8mb4排序规则utf8mb4_general_ci。SQL 文件在项目里找导入即可。第二步改配置配置文件在crmeb-common的 resources 下。要改的主要是数据库连接和 Redis 连接。数据库这块注意时区参数MySQL 5.7 不带时区参数经常报The server time zone value is unrecognized加上serverTimezoneAsia/Shanghai就行。第三步确认 Redis 起着这个项目对 Redis 依赖比较重队列、缓存都走它。redis-cli ping返回 PONG 再往下走别等启动报错了才想起来。第四步编译根目录mvn clean install -DskipTests。跳过测试这一步建议加上第一次编译带测试跑很容易因为环境不全失败先把包打出来再说。第五步分别启动 admin 和 front 两个服务启动成功后Swagger 接口文档能直接访问这是验证后端起来了最快的方式。项目集成了 Swagger接口文档是自动生成的二开的时候查接口挺方便。前端启动PC 管理后台admin/npm install npm run devNode 版本必须对14.x。用 Node 18 装依赖会遇到一堆 node-sass 相关的编译错误这是 Vue 2 时代项目的通病不是这个项目独有的。如果非要用高版本 Node可以试--openssl-legacy-provider但我建议还是老实用 nvm 切到 14省心。移动端app/用 HBuilderX 打开app/目录选运行到浏览器H5或运行到小程序开发者工具。小程序端要先在 manifest 里配 AppID否则开发者工具会报错。我踩的六个坑坑一JDK 17 起不来最大的一个。项目基于 SpringBoot 2.2.6JDK 17 环境下会遇到反射相关的模块访问限制。降到 JDK 8 直接解决。这一条要提前评估如果你们团队已经全面迁到 JDK 17用这个项目就意味着要单独维护一个 JDK 8 环境或者自己承担升级 SpringBoot 的工作。这不是小事选型阶段就得想清楚。坑二只起了 admin 服务前面说过了。后端是 admin 和 front 两个服务C 端接口在 front 里。第一次部署的人十有八九会栽这一下。坑三Node 18 装不上依赖node-sass 编译失败各种 gyp 报错。nvm 切 14 解决。坑四Redis 没起启动报连接超时找了半天配置最后发现 Redis 服务压根没开。这个纯属我自己的问题但确实浪费了二十分钟。坑五文档看错版本doc.crmeb.com上 PHP 版和 Java 版的文档在同一个站。我有一次照着 PHP 版的部署说明配置折腾了一个多小时才发现路径不对。Java 版的文档路径是/java/crmeb_java/进去之前看一眼地址栏。这个提醒看起来很傻但真的有人我踩。坑六搜报错搜到 PHP 版的答案这个牌子 PHP 版做得早、量大网上帖子绝大多数是 PHP 版的。搜 Java 版的报错出来的解法经常是 PHP 版的得自己判断能不能对应。Java 版这块的社区内容确实少——说实话这也是我写这篇的原因之一能给后来的人省点时间。二次开发的几个观察跑通之后我在上面做了些改动说几个体感分层清楚加接口不用找。后台的接口往crmeb-admin放C 端的往crmeb-front放业务逻辑往crmeb-service公共的往crmeb-common。规则简单到不用查文档。MyBatis-Plus Swagger 是常规配置。没有奇怪的自研框架会 Spring 的人上手基本没有学习成本。我个人很看重这一点——赶工期的项目最怕遇到「有想法」的技术选型。权限走 SpringSecurity。多角色多身份能控制到单步操作。改权限规则的时候要熟悉 SpringSecurity 的配置方式不熟的话这块会花点时间。全开源无加密。我特意去翻了核心业务类是.java源文件不是.class也没找到授权校验相关的代码。协议是 Apache-2.0商用需要保留版权信息。这一点对交付型项目很重要选型阶段建议自己也验一遍。装修器是意外收获。后台有个可拖拽的页面 DIY21 个组件图片热区、图片魔方这些都有。上线后客户改首页自己就搞定了没来找我。做过交付的都知道这能省多少沟通。说几句不好的Vue 2 Element UI 2.13。写惯了 Vue 3 组合式 API回去写 Options API 挺别扭。另外 Vue 2 的生态在 2026 年确实在收缩了找组件库插件的时候能感觉到。SpringBoot 2.2.6 偏旧。这个前面说过了JDK 8 环境下没问题JDK 17 团队要单独评估。单体架构。中小项目够用运维成本也低。但如果你的日订单量在十万级以上、需要独立扩缩容得考虑别的方案了。常见问题QCRMEB Java 版的环境要求是什么AJDK 1.8、Maven 3.6.1、MySQL 5.7、Redis 5、Node.js 14、npm 6。JDK 17 环境起不来必须降到 8。Q为什么后端要起两个服务Acrmeb-admin是后台管理 APIcrmeb-front是 C 端 API职责分离。好处是两边的鉴权、限流、发布节奏可以独立C 端流量高峰不影响后台操作。第一次部署两个都要起。QCRMEB Java 版能免费商用吗A协议是 Apache-2.0免费商用需保留版权信息。代码全开源无加密。具体到界面上的版权标识能不能改建议在官方文档或咨询官方确认清楚交付型项目尤其要提前问别等客户验收时才发现。QJava 版和 PHP 版是同一套代码吗A不是两个独立仓库。Java 版是 SpringBoot Vue uni-appPHP 版是 ThinkPHP Vue。功能定位相近但代码库完全分开文档也要看对应版本的路径。Q二次开发难度怎么样A如果你熟悉 SpringBoot MyBatis-Plus基本没有额外学习成本。分层清晰是最大的加分项。前端如果只会 Vue 3管理端那套 Vue 2 需要适应一下。
返回列表