从官网上把前后端分离版ruoyi-vue安装下来后:
一、环境配置
首先,根据若依前后端分离的使用文档来看,环境的配置要求如下:
1.JDK的版本>=1.8
我配置的是21版本的,且要在项目结构中设置Project Structure→Project中的SDK设置21,Language level:8-Lambdas,type annotations etc.
2.Maven >=3.0
我配置的是3.9.5版本的。
在设置里面搜maven或者直接点Build,Execution,Deployment里的Build Tools中的Maven可查看Version为3.9.5。
3.MySQL >=5.7
我配置的是5.7版本的。
用ide打开后找到数据库配置的那个文件(.yml)修改:
端口号:3307 (我自己修改的端口号,一般默认是3306)
url:
jdbc:mysql://localhost:3307/pdms-vue?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 (数据库名也被我修改了pdms-vue)
username: root (根据个人的设置不同而修改)
password: 123
建数据库可在Navicat中直接创建数据库:
新建数据库→数据库名:pdms-vue→字符集:utf8mb4 →排序规则: utf8mb4_general-ci
导入sql文件:右键运行SQL文件→文件导入→开始→取消→刷新查看,导入成功!
4.node.js >=12
我的版本是20.17.0
参考csdn中别人的文章:Node.js安装与配置(详细步骤)_nodejs安装及环境配置-优快云博客
5.Redis >=3
我的版本是20.17.0
参考csdn中别人的文章:超详细Redis下载安装图文教程(Win和Linux版)-优快云博客
启动服务:
redis-server.exe --service-start --service-name redisserver1
停止服务:
redis-server.exe --service-stop --service-name redisserver1
二、系统运行
先启动后端然后再启动前端。
1.后端启动:直接点编译运行就可以了。
2.前端启动:
打开ide的终端,进入项目目录:
cd ruoyi-ui
# 安装依赖 这个重新做的项目都需要安装!
npm install
# 强烈建议不要用直接使用 cnpm 安装,会有各种诡异的 bug,可以通过重新指定 registry 来解决 npm 安装速度慢的问题。{这小段可以先查询一下npm的镜像路径:npm config get registry
,是下面这句的话就不用输入这段}
npm install --registry=https://registry.npmmirror.com
===============
# 本地开发 启动项目
npm run dev
===============
【之后再次启动前端,只需要cd ruoyi-ui→npm run dev两步到位】
启动成功后:
登录用户:admin
密码:admin123
三、改父项目名称
1.改父项目名:先rename后close项目且remove然后在文件夹那重命名再打开项目
2.pom.xml:<name></name>名字改了
3.改子项目rouyi-admin 改成 pdms-admin 后面的也是 注意是rename module and directory
四、改子项目里面的包项目【易出错!!!!!!!!!】
先修改pdms-common里包名,从com.ruoyi.common到com.pdms.common
点击这个包,右键Refactor→Rename,ruoyi改成pdms,等待加载。 刷新Maven!
如果有人引这个common的依赖,点击Maven里的Lifecycle中的compile进行全局编译,可以检查【如果有人引用它,它改动了一点,就会报错。】
修改pdms-system的pom.xml中的:
<!-- 通用工具-->
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>ruoyi-common</artifactId>
</dependency>
改成:
<!-- 通用工具-->
<dependency>
<groupId>com.ruoyi</groupId>
<artifactId>pdms-common</artifactId>
</dependency>
运行看是否出错。
之后修改pdms-system的包名,/pdms-quartz/pdms-generator/pdms-framework/pdms-admin(最后一个是admin)!
=========怎么修复错误?快捷键?==========================
在run里,双击一个有错误的接口impl?复制ctrl+C然后1.【双击shift:搜索关键词的文件在哪】,粘贴,搜索出错点在哪。
2.【ctrl+F】在单个文件中,如.java类中,搜索 关键词。
3.【ctrl+shift+R】 replace in files 替换
4.【ctrl+shift+F】 Find in files 查找
public class KaptchaText...右键包名 Copy/Paste Special →Copy Reference ????
(1 【双击shift】搜“redis” 第三个类:FastJson2JsonRedisSerializer.java
(2 第21行:JSON_WHITELIST_STR 【ctrl点击进入!!!】修改四处地方的ruoyi→pdms
=====================================================================
5.【谨慎修改。也可不改不影响:】修改父工程里的pom.xml中的<groupId>com.ruoyi</groupId>!!!!!!!!!! 第七行
因为子工程都需要改!所以修改:各个子工程的pom.xml里的<groupId>com.pdms</groupId> 第七行以及第22行(指system中的xml)的<groupId>也要修改
(6个子工程都要修改,然后刷新)
修改好子工程的pom.xml之后要记得修改父工程的pom.xml 从第151行开始:修改成<groupId>com.pdms</groupId>五处。以及。把第153行的<version>中的ruoyi修改pdms。可快捷键替换【ctrl+R】单类下的替换不是所有类都替换!!!→replace All
再刷新一下。再运行后端和前端,检查一下界面功能。
6.修改一些ruoyi细节:
【双击shift】:ruoyi点classes:RuoYiConfig.java 点击定位 →refactor→rename→PdmsConfig
再把第12行的 prefix=“pdms" 配置文件
切换到admin的application.yml文件中去。把第二行的ruoyi修改成pdms。第四行的RuoYi修改成PDMS。第十行的路径可以随便改:/pdms
【第94行的header不要改成token!!!!!!】
然后跑一下。
五、出现的问题bug
BUG:
1.
Caused by: java.lang.RuntimeException: mybatis typeAliasesPackage 路径扫描错误,参数typeAliasesPackage:com.ruoyi.**.domain未找到任何包
修改:
application.yml中第103行的:
# MyBatis配置
mybatis:
# 搜索指定包别名
typeAliasesPackage: com.pdms.**.domain
2.
pdms-framework中的config包中的CaptchaConfig修改第66行的ruoyi为pdms
3.
18:27:20.359 [schedule-pool-1] INFO sys-user - [run,55] - [127.0.0.1]内网IP[admin][Success][登录成功]
18:27:20.492 [http-nio-8080-exec-3] ERROR c.p.f.w.s.TokenService - [getLoginUser,79] - 获取用户信息异常'class com.alibaba.fastjson2.JSONObject cannot be cast to class com.pdms.common.core.domain.model.LoginUser (com.alibaba.fastjson2.JSONObject and com.pdms.common.core.domain.model.LoginUser are in unnamed module of loader org.springframework.boot.devtools.restart.classloader.RestartClassLoader @1a707233)'
18:27:20.512 [http-nio-8080-exec-4] ERROR c.p.f.w.s.TokenService - [getLoginUser,79] - 获取用户信息异常'class com.alibaba.fastjson2.JSONObject cannot be cast to class com.pdms.common.core.domain.model.LoginUser (com.alibaba.fastjson2.JSONObject and com.pdms.common.core.domain.model.LoginUser are in unnamed module of loader org.springframework.boot.devtools.restart.classloader.RestartClassLoader @1a707233)'
18:27:28.509 [SpringApplicationShutdownHook] INFO o.q.c.QuartzScheduler - [standby,585] - Scheduler quartzScheduler_$_NON_CLUSTERED paused.
18:27:28.541 [SpringApplicationShutdownHook] INFO o.q.c.QuartzScheduler - [shutdown,666] - Scheduler quartzScheduler_$_NON_CLUSTERED shutting down.
18:27:28.541 [SpringApplicationShutdownHook] INFO o.q.c.QuartzScheduler - [standby,585] - Scheduler quartzScheduler_$_NON_CLUSTERED paused.
18:27:28.541 [SpringApplicationShutdownHook] INFO o.q.c.QuartzScheduler - [shutdown,740] - Scheduler quartzScheduler_$_NON_CLUSTERED shutdown complete.
18:27:28.541 [SpringApplicationShutdownHook] INFO sys-user - [shutdownAsyncManager,31]
无效会话,过期。
修复:
========================================================
(1)关键信息:ctrl+c :TokenService 【双击shift】右Classes查找当前的类
(2)关键信息:79行:json转换的异常问题!在第79行前添加一句,不可删除!:e.printStackTrace();//异常堆栈信息
然后重新启动一下。
即:
catch (Exception e)
{
e.printStackTrace();//异常堆栈信息
log.error("获取用户信息异常'{}'", e.getMessage());
}
(3)仍出错:(TokenService.java:74)
原因://从redis中获取数据,转成java报错(redis默认返回json,会找他原来的包名下的类,找得到就自动转,找不到就给你json了:不是同一个key)
说明userKey有问题。
(1 【双击shift】搜“redis” 第三个类:FastJson2JsonRedisSerializer.java
(2 第21行:JSON_WHITELIST_STR 【ctrl点击进入!!!】
来到这里{后面四处ruoyi都要修改!!!!!}:
/**
* 自动识别json对象白名单配置(仅允许解析的包名,范围越小越安全)
*/
public static final String[] JSON_WHITELIST_STR = { "org.springframework", "com.ruoyi" };
。。。。略写
----------------------------
把第161行和166行和172行的ruoyi修改成pdms:
/**
* 自动识别json对象白名单配置(仅允许解析的包名,范围越小越安全)
*/
public static final String[] JSON_WHITELIST_STR = { "org.springframework", "com.pdms" };
/**
* 定时任务白名单配置(仅允许访问的包名,如其他需要可以自行添加)
*/
public static final String[] JOB_WHITELIST_STR = { "com.pdms.quartz.task" };
/**
* 定时任务违规的字符
*/
public static final String[] JOB_ERROR_STR = { "java.net.URL", "javax.naming.InitialContext", "org.yaml.snakeyaml",
"org.springframework", "org.apache", "com.pdms.common.utils.file", "com.pdms.common.config", "com.ruoyi.generator" };
}