## 工程启动准备 1. 由于升级了JDK17,Java 模块化系统(Java Module System)的安全限制导致的针对反射等场景有可能会出现如下错误: ~~~ Cause: java.lang.reflect.InaccessibleObjectException: Unable to make field protected java.lang.reflect.InvocationHandler java.lang.reflect.Proxy.h accessible: module java.base does not "opens java.lang.reflect" to unnamed module @223aa2f7 ~~~ 2. 这种情况,我们需要在启动时增加对应配置: ~~~ --add-opens java.base/java.lang.reflect=ALL-UNNAMED ~~~ 3. 具体完整命令,格式如下: ~~~shell java --add-opens java.base/java.lang.reflect=ALL-UNNAMED -jar your-application.jar ~~~ 4. 若依旧报错可以增加第二个参数`--add-opens java.base/java.lang=ALL-UNNAMED`,格式如下 ~~~shell java --add-opens java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.lang.reflect=ALL-UNNAMED -jar your-application.jar ~~~ 5. 若出现如下错误:`module java.base does not "opens java.io" to unnamed module`,则额外增加如下配置 ~~~shell -–add-opens java.base/java.io=ALL-UNNAMED ~~~ 6. 若出现如下错误:`module java.base does not "opens java.util" to unnamed module`,则额外增加如下配置 ~~~shell -–add-opens java.base/java.util=ALL-UNNAMED ~~~ 7. 其他更多错误则可以通过搜索工具,搜索具体报错来查询具体对应的配置,配置较多本文档便不再一一列举 8. 具体操作如下,针对启动类依次添加配置即可 ![](https://img.kancloud.cn/7c/92/7c926e4c843782bb6ead35c89ec15488_2516x1356.png) 9. jar包启动时也需要加入此配置,具体命令如下(增加的命令以最终可运行为准) ~~~ java --add-opens java.base/java.lang.reflect=ALL-UNNAMED -jar your-application.jar ~~~ <br><br> ## 工程启动顺序 1. 先启动`redis`、`mysql`、`nacos`、`sentinel`等基础服务 2. 启动除`blade-gateway`之外的项目 3. 最后启动`blade-gateway` ## 工程启动开始 1. 批量启动红框内的基础服务,这是保证系统可以运行的最低要求服务 ![](https://img.kancloud.cn/bd/2e/bd2e6adeb9df43a209c4fe17d8e0d462_560x642.png) 2. 启动完毕后可以尝试启动其他服务进行验证 ## 验证服务是否启动成功 1. 若看到下图,则说明服务启动成功 ![](https://img.kancloud.cn/40/c6/40c628eb2d3c4262f6d33dbcdf7eb6b4_3352x790.png) 2. 打开nacos http://localhost:8848/nacos 查看服务列表 ![](https://img.kancloud.cn/fd/23/fd230cbe63a51f070e6c85968fa661c4_2498x1846.png) 2. 打开一个服务的详情,可以看到健康状态为true,注册成功 ![](https://img.kancloud.cn/b3/9a/b39ab9b1c8f8a62d32689df7c8a075dc_2582x1804.png) 3. 注意⚠️:若nacos配置后工程无法启动成功,那一定是有配置遗漏,具体注意点请看:[https://sns.bladex.cn/q-41.html](https://sns.bladex.cn/q-41.html)