JeecgBoot icon indicating copy to clipboard operation
JeecgBoot copied to clipboard

jar包初始化创建code模板报错:cn.hutool.core.io.IORuntimeException: IOException: Not a directory

Open yingw opened this issue 2 years ago • 5 comments

版本号:

3.4.4

前端版本:vue3版?还是 vue2版?

Vue3

问题描述:

打包jar发布生产环境时,注意到启动报错:

2022-11-22 15:10:11.082 [main] INFO  org.jeecg.config.init.CodeTemplateInitListener:63 - create file codeTemplate = /opt/jeecg-boot-3.4.4/config/jeecg/code-template-online/common/form/native/
cn.hutool.core.io.IORuntimeException: IOException: Not a directory

研究了一下好像是Util在创建到一些目录是变成文件了(可能是做了touch),然后不是目录就报错了。增加了一些日志输出观察和当前文件名、目录无关,并且相关功能在3.4.2下重测了是正常的(删除了config目录,增加了日志输出,第一次启动可以循环创建模板目录),可以手动解压解决,但是希望能看下问题出在哪里

截图&代码:

3.4.2 正常创建目录: image

3.4.4 创建到这一级变成文件了 image 启动就会报错: image

这里的代码,增加了日志 image

友情提示(为了提高issue处理效率):

  • 未按格式要求发帖,会被直接删掉;
  • 描述过于简单或模糊,导致无法处理的,会被直接删掉;
  • 请自己初判问题描述是否清楚,是否方便我们调查处理;
  • 针对问题请说明是Online在线功能(需说明用的主题模板),还是生成的代码功能;

yingw avatar Nov 22 '22 07:11 yingw

哦。。。看出来好像是因为我的3.4.4目录里面带 . ,没有continue

不太明白这样做的意图 if (!filepath.contains(".jar!/BOOT-INF/lib/") || !createFilePath.contains(".")) {

yingw avatar Nov 22 '22 07:11 yingw

测试了的确是,目录改成不带 . 就好了……请教这个带点的意思是?

yingw avatar Nov 22 '22 07:11 yingw

你的文件名字带点?

zhangdaiscott avatar Nov 22 '22 08:11 zhangdaiscott

文件目录带. 就会这样,你们可以试试看: /opt/jeecg-boot-3.4.4/

yingw avatar Nov 23 '22 02:11 yingw

文件名是默认打包出来的 jeecg-system-biz-3.4.4.jar 文件名是默认的,也带 . 不过用来判断的变量 createFilePath 好像是去掉了文件名的路径,判断路径里面如果不包含 . 则跳过循环,只是不明白这么判断的逻辑是什么。建议这个逻辑一定要这么写的话,要说明一下生产环境路径不能带 .

yingw avatar Nov 23 '22 02:11 yingw