Jeecg及Vue相关错误记录

1 篇文章 0 订阅
1 篇文章 0 订阅

Jeecg及Vue错误记录

1.问题一 Init DruidDataSource

项目场景

Jeecg2.4.5启动


问题描述

INFO c.a.d.s.b.a.DruidDataSourceAutoConfigure:56 - Init DruidDataSource

报错运行时一直出现 c.a.d.s.b.a.DruidDataSourceAutoConfigure:56 - Init DruidDataSource
不停的刷新;
或者是出现 Bean ‘org.springframework.boot.autoconfigure.jdbc.JdbcTemplateConfiguration’ of type [org.springframework.boot.autoconfigure.jdbc.JdbcTemplateConfiguration] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible


原因分析

数据库相关部分有问题,配置文件出错application.yml application-dev.yml等,数据库版本和连接器版本不对,如mysql5.7对应连接器5.1.47等

解决方案

1.修改了pom.xml

mysql-connector-java.version>5.1.47</mysql-connector-java.version>

原来为8.开头;
2.修改了application.yml
报错时最后发现没把application-dev对应的部分加载进来,之前active:'@archiveEnv@'自己修改了没改回来

spring:
  application:
    name: jeecg-system
  profiles:
    active: @profile.name@

2.问题二 依赖的包出现多次

项目场景:

Jeecg2.4.5版本迭代时引入之前的模块,但依赖的包出现多次,多个版本

问题描述:

例如Maven: com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.11.32 出现多个版本2.11和2.9版,多个不同的依赖可能导致Jeecg启动时报错

原因分析:

打开Project Structure菜单项发现Library里存在多个版本的同一依赖包,应该是引入模块自带的pom.xml文件导致

解决方案:

将旧模块的pom.xml的dependencies里的依赖替换为新版本jeecg-boot-demo中的依赖,如下
 <dependencies>
        <dependency>
            <groupId>org.jeecgframework.boot</groupId>
            <artifactId>jeecg-boot-base-core</artifactId>
        </dependency>
        <!--引入微服务启动依赖 starter
      <dependency>
          <groupId>org.jeecgframework.boot</groupId>
          <artifactId>jeecg-boot-starter-cloud</artifactId>
      </dependency>
        <dependency>
            <groupId>org.jeecgframework.boot</groupId>
            <artifactId>jeecg-boot-starter-job</artifactId>
        </dependency>-->
    </dependencies>

当然,旧版本可能存在现行版本没有的类或方法,可能需要自行调整。

3.问题三 swagger文档未显示自定义接口

项目场景:

Jeecg2.4.5引入其他模块

问题描述:

引入时自己的控制类接口没有在swagger文档中显示

原因分析:

引入模块的配置文件没有完全配置好

解决方案:

参考官方Jeecg文档:[Jeecg文档——idea快速创建模块](http://doc.jeecg.com/2043939)

1.jeecg-boot-parent里加入模块:

	<modules>
        <module>jeecg-boot-base</module>
		<module>jeecg-boot-module-demo</module> 
        <module>jeecg-boot-module-system</module>
       <!-- 需要微服务,请打开注释
       <module>jeecg-boot-starter</module>
        <module>jeecg-cloud-module</module>-->
	</modules>

2.Jeecg-boot-moudle-system中加入模块依赖

	<dependency>
			<groupId>org.jeecgframework.boot</groupId>
			<artifactId>jeecg-boot-module-demo</artifactId>
			<version>${jeecgboot.version}</version>
		</dependency>

3.自己的模块中补全依赖
jeecg-boot-module-system作为启动项目,所以其他模块不要引用system。
jeecg-boot-base-core作为基础Core,所以新建模块一定要引用。

<dependencies>
        <dependency>
            <groupId>org.jeecgframework.boot</groupId>
            <artifactId>jeecg-boot-base-core</artifactId>
        </dependency>
        <!--引入微服务启动依赖 starter
      <dependency>
          <groupId>org.jeecgframework.boot</groupId>
          <artifactId>jeecg-boot-starter-cloud</artifactId>
      </dependency>
        <dependency>
            <groupId>org.jeecgframework.boot</groupId>
            <artifactId>jeecg-boot-starter-job</artifactId>
        </dependency>-->
    </dependencies>

4.问题四 npm ERR! code EINVALIDPACKAGENAME

项目场景:

Jeecg或者ruoyi运行前端Vue时

问题描述:

环境问题:
npm ERR! code EINVALIDPACKAGENAME

原因分析:

同时报的warning有
npm WARN old lockfile
npm WARN old lockfile The package-lock.json file was created with an old version of npm,
npm WARN old lockfile so supplemental metadata must be fetched from the registry.
npm WARN old lockfile
npm WARN old lockfile This is a one-time fix-up, please be patient...
npm WARN old lockfile

所以,估计是自己的npm版本比较高,package-lock.json文件使用旧版本。但具体原因未知。


解决方案:

可以试试旧版本能否安装成功,参考
npm WARN old lockfile package-lock.json 文件是用旧版本的 npm 创建的
我没有尝试这种方法。

另外参考当npm install时候,出现错误:npm ERR! code EINVALIDPACKAGENAME npm ERR! Invalid package name “@types/“: name
也建议备份package-lock.json

最后参考解决nodejs打前端包时报npm ERR! code EINVALIDPACKAGENAME
但是之前通过cnpm能安装成功,这次的项目恰巧卡住了,可能是由于项目问题。

5.问题五 HttpMediaTypeNotAcceptableException

项目场景:

Jeecg框架下 在Controller控制类中

问题描述:

出现异常org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation

原因分析:

一个自定义方法用到HttpServletResponse response的response.outputStream,而且我使用了一下语句,
response.setContentType("application/ms-excel;charset=UTF-8");

原来的想法是返回一个Excel文件,但是后来修改后返回了其他类型。

参考:org.springframework.web.HttpMediaTypeNotAcceptableException: Could not find acceptable representation
@ResponseBody 需存在,才可复现。(可以在Controller Class上,如果不存在,会直接走视图解析器)
produces定义了 contentType为application/ms-excel,实际返回了其他类型


解决方案:

找到ContentType相关的语句,斟酌此类型和返回类型是否一致,如果不一致,作适当的修改(我直接注释掉了response.setContentType("application/ms-excel;charset=UTF-8");该语句)。

6.问题六 Do not use @ for indentation

问题描述:

Jeecg启动后端时,application.yml报错
Caused by: org.yaml.snakeyaml.scanner.ScannerException: while scanning for the next token
found character '@' that cannot start any token. (Do not use @ for indentation)
 in 'reader', line 5, column 13:
        active: @profile.name@

原因分析:

应该是Jeecg项目中application.yml无法找到@profile.name@对应的文件

解决方案:

重新reimport一下maven项目,idea下直接点击Mave栏目中的Reload all maven project,或者右击pom.xml,找到maven——reload

7.问题七 java.lang.reflect.InvocationTargetException

问题描述:

Jeecg项目在点击导出时发生异常异常 java.lang.reflect.InvocationTargetException

Exception in thread "main" org.apache.poi.POIXMLException: org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException
	at org.apache.poi.xslf.usermodel.XMLSlideShow.<init>(XMLSlideShow.java:82)
	at org.apache.poi.xslf.usermodel.XMLSlideShow.<init>(XMLSlideShow.java:68)
	at demo.ppt.Graph2Ppt.main(Graph2Ppt.java:59)
Caused by: org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException
	at org.apache.poi.xslf.usermodel.XSLFFactory.createDocumentPart(XSLFFactory.java:66)
	at org.apache.poi.POIXMLDocumentPart.read(POIXMLDocumentPart.java:403)
	at org.apache.poi.POIXMLDocument.load(POIXMLDocument.java:155)
	at org.apache.poi.xslf.usermodel.XMLSlideShow.<init>(XMLSlideShow.java:80)
	... 2 more
Caused by: java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at org.apache.poi.xslf.usermodel.XSLFFactory.createDocumentPart(XSLFFactory.java:64)
	... 5 more
Caused by: java.lang.ExceptionInInitializerError
	at org.openxmlformats.schemas.presentationml.x2006.main.SldMasterDocument$Factory.parse(Unknown Source)
	at org.apache.poi.xslf.usermodel.XSLFSlideMaster.<init>(XSLFSlideMaster.java:68)
	... 10 more
Caused by: java.lang.NullPointerException
	at org.apache.xmlbeans.XmlBeans.typeSystemForClassLoader(XmlBeans.java:769)
	at org.openxmlformats.schemas.presentationml.x2006.main.SldMasterDocument.<clinit>(Unknown Source)
	... 12 more



原因分析:

POI包版本冲突

之前自己需要新版poi的包,作了包的改变,但是没有对所有功能进行测试,程序中存在两个版本POI4.1.2和POI3,导致编译时找不到对应的方法。


解决方案:

打开pom.xml,idea增加依赖分析器的插件后,

依赖分析
在Dependency Analyzer中找到对应冲突的包,作删除或Exclude。

8.问题八 idea右上角一直在Syncing

问题描述:

Jeecg项目运行时,前端ant-design-vue-jeecg的运行我使用了cnpm install命令安装所需要的包, 以文件夹node_modules的形式存放在ant-design-vue-jeecg目录下。这造成idea无法分析代码,状态一直未Syncing。

原因分析:

node_modules这个目录太大,文件太多,使得idea一时半会儿无法完成同步,所以想办法搞定这个目录即可。

解决方案:

经过测试,删除node_modules目录后代码分析恢复正常,但是我们使用类似的方法,在Settings中有一个Ignored Files and Folders的选项,我们把node_modules加入即可。

File Types

9.问题九 vue-cli 3.x中@路径提示Module is not installed

参考链接:https://blog.csdn.net/qq_37274323/article/details/100206842

问题描述:

vue-cli 3.x中@路径提示Module is not installed

原因分析:

其实我也不知道什么原因,大概是idea还不是完全体的软件,难免会有bug。

解决方案:

人工配置一下webpack.config.js文件路径

配置webpack

因为我的上一个问题是node_modules,所以找不到webpack.config.js文件,可以先取消忽略,再选择。结果发现重新扫描之后好像都不用忽略node_modules了,一举两得?!

10.问题十 swagger文档参数和实际不一致

问题描述:

jeecg项目启动后,后台会生成swagger文档,在某个接口中,实体类对象与接口参数显示不一致。 我的程序是两个子表A,B,但是子表参数一样,肯定是错误的,因为它们俩对应的对象A,B不一样。

原因分析:

一定存在某个注解,使得两个对象解析的参数一致。特别关注@ApiModel和@ApiModelProperty的value。

解决方案:

经过排查@ApiModel和@ApiModelProperty两个注解,发现在主表类C中,它们对应的@ApiModelProperty不一致,但是它们本身的类注解@ApiModel的value一致,修改。

11.问题十一 idea的Git操作等待

问题描述:

使用idea从独立的git服务器上Pull或者Push时,发生等待的情况,fetch操作可以成功,commit操作有时也可以成功,但Pull和Push一直处于缓冲状态,且点击取消无效,处于stop Pull...和stop Push...状态。

原因分析:

回想可能是自己的git服务器重启过,在重启之前自己曾经Pull过也曾经commit过,都失败。 这可能与之有关。

解决方案:

git服务器重启过后,好像突然可以Pull了,但是Push好像还是不行,暂时使用文件夹中的Git GUI或Git Bash试试... 离了大谱,我等了很久(得5分钟以上),发现push成功了...

此外,我发现我的idea运行git相关操作卡住时,只要运行任务管理器,关闭Git for Windows进程,就能成功执行Git操作。

12.问题十二 Jeecg与SysDict有关报错

问题描述:

与SYSDict有关,显示selectOne 但是大于1个

原因分析:

前端有字典操作,查询重复

解决方案:

改前端相关部分,某个字段,或者是数据库有重复数据

13.问题十三 Error: Cannot find module ‘@babel/preset-preset.env‘

问题描述:

babel插件安装配置报错!Error: Cannot find module ‘@babel/preset-preset.env‘

原因分析:

肯定与babel相关,但是我也不清楚具体原因

解决方案:

整个Vue项目启动可以参考IDEA工具引入Vue

可以在命令行中,该项目目录下,运行cnpm install
然后安装babel转换相关的包

npm i babel-loader @babel/core @babel/runtime -D

继续安装babel语法插件相关的包:

npm i @babel/preset-env @babel/plugin-transform-runtime @babel/plugin-proposal-class-properties –D

此部分参考JavaScript高级语法打包 - babel插件安装配置报错!

14.问题十四 Rule can only have one resource source

问题描述:

Error: Rule can only have one resource source (provided resource and test + include + exclude)

原因分析:

参考链接[添加链接描述](https://blog.csdn.net/weixin_40643648/article/details/109444867) package.json中webpack版本冲突问题。

解决方案:

在cnpm install后 删除webpack,重新装以前的版本。 npm uninstall webpack

15.问题十五 ~@assets/less/common.less未找到

问题描述:

idea运行vue项目,在.vue文件中 ~@assets/less/common.less未找到,
且import部分出现Module is not installed。


解决方案:

找到File——settings——Languages and Frameworks——javascript——webpack,
选择Manually,直接找到node_modules/@vue/cli-service/webpack.config.js复制其所在路径,
将该配置文件路径粘贴找配置项中,点击apply——ok。

16.问题十六 idea无法检测为vue文件

问题描述:

idea创建vue文件时,自己稀里糊涂的忘记加入后缀名,成为txt文件,自己瞎弄一通导致输入指定文件名时,例如abc.vue,被检测为abc.vue.txt

解决方案:

实际上,该文件是被检测为Auto-detect file type by content。 在idea——菜单file——setting——Editor——FileTypes——Recognized FileTypes,找到Auto-detect file type by content,在File Name Patterns中找到输入的名称,删除。 此外,其他检测不到的类型也可以在此页面找找试试。

17.问题十七 无法指定类

问题描述:

springboot 报错无法指定一个类

解决方案:

类似于

springboot 整合工程,不同包中类名相同冲突问题解决
也可以删除同名文件类。

18.问题十八 插入实体类获取ID

问题描述:

mybatis使用mapper后获取ID

解决方案:

mybatis使用mapper插入后,mapper.insert(entity)后,entity.getId()即可获取ID

19.问题十九 list自定义取元素

问题描述:

list按照自定义规则取元素

解决方案:

List.stream().map().collect(Collectors.toList());
List.stream().filter().collect(Collectors.toList());

20.问题二十 could not open `E:\Java\lib\amd64\jvm.cfg

问题描述:

命令行运行java发现出现 could not open `E:\Java\lib\amd64\jvm.cfg

原因分析:

查阅资料,发现跟javapath相关,仔细回想之前为了减轻C盘容量,修改过注册表的值,将C:\Program Files (x86)\ 修改到D盘

解决方案:

我是找到环境变量,修改了
D:\Program Files (x86)\Common Files\Oracle\Java\javapath 
D:\ProgramData\Oracle\Java\javapath

原来为C盘,改到D盘

21.问题二十一:java.lang.NullPointerException

问题描述:

使⽤spring注解@Autowired,⼜new对象会使注解失效

原因分析:

在使⽤spring框架注解的时候,不能在通过new 关键字去实例化全局变量。如果两者并存的情况下,spring注⼊对象会失败,相应的引⽤ 会为空,后台就会报空指针异常 ⽐如这种情况: DeptServiceImpl deptService =new DeptServiceImpl(); @Autowired private Mapper mapper; 这个时候服务器都不能正常运⾏,显⽰注⼊bean对象失败

解决方案:

使用@Autowired引入

22.问题二十二 java.util.ConcurrentModificationException 异常

问题描述:

java.util.ConcurrentModificationException 异常

原因分析:

参考:list删除元素异常
用Itr去遍历的,这个Itr是ArrayList实现的一个遍历接口、内部类。

但是我在删除的时候是通过ArrayList的remove方法去操作的,不是Itr内部的那个删除方法去操作的。


解决方案:

改为Iterator迭代器迭代的方式
  for(Iterator<Integer> it=arr.iterator(); it.hasNext();){
            Integer i = it.next();
            if(i == 5){
                it.remove();
            }
            else{
                System.out.println(i);
            }
        }

22.问题二十二 分页后获取List然后remove,数据错误

问题描述:

在分页操作后,获取getRecords获取List,但是之后作了remove操作,使得当前页面无数据。

原因分析:

selectPageList仅查询当前页面的当前大小数据

解决方案:

应直接在mybatis查询时排除非查询数据记录。

23.问题二十三 引用类型直接修改赋值

问题记录:

从IPage中使用getRecords获取List,然后对List进行修改,再使用setRecords赋值,这样是不必要的。因为获取的List为引用类型,所以直接获取修改即可,不用再setRecords。

24.问题二十四 @TableLogic 逻辑删除

逻辑删除
官网mybatis-plus 逻辑删除

25.问题二十五 axios 发 post 请求,后端接收不到参数的原因及解决方案

问题描述:

后端使用jeecgboot中post请求@RequestParam,前端vue使用axios请求,只传入一个参数。发现后端无法获取参数。

原因分析:

参考:axios 发 post 请求,后端接收不到参数

使用axios请求数据时,我们的 Content-Type 变成了 application/json;charset=utf-8

然后,因为我们的参数是 JSON 对象,axios 帮我们做了一个 stringify 的处理。

而且查阅 axios 文档可以知道:axios 使用 post 发送数据时,默认是直接把 json 放到请求体中提交到后端的。

那么,这就与我们服务端要求的 ‘Content-Type’: ‘application/x-www-form-urlencoded’ 以及 @RequestParam 不符合。


解决方案:

后端使用@RequestBody,使用实体类接收参数。

26.问题二十六 使用mybatisplus单个参数无法使用#{entity.xxx}

问题描述:

后端接口使用实体类接收,前端传入单个参数,但在xml文件中无法使用#{entity.xxx}的形式获取这个参数

原因分析:

猜想Mybatis对单个参数不作处理(仅仅是猜想,未证实)

解决方案:

xml中使用#{参数名},不使用实体类get的方式。

Thanks

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值