我们日常都习惯使用Inteilj IDEA进行日常的Java 后台项目的开发,常常需要生成多级文件夹构成的目录。在用于存放main.java的源文件目录下,例如要生层一个包含多级com/example/demo的多级文件目录,直接新建一个package,名称填写com.example.demo即可,IDEA会系统帮我们将填写的com.example.demo生成一个嵌套的多级目录。
于此类似,在resources资源文件夹目录下,有时我们也需要建立多级目录,例如在编写SPI机制的Demo的过程中,需要建立一个META-INF/services的多级目录,目录下是一个以接口路径命名的文本文件。如果采用与源文件目录下下建立多级目录类似的方式去操作,那么恭喜你,跟在下一样踩坑了:此时IDEA并不会帮助你生成META-INF嵌套services的多级目录,而是生成一个名称为META-INF.services的单级目录。
image.png
下面说一下排查问题的过程:
首先,看一下直接new package,name ="META-INF.services"时生成的classes文件夹目录结构:
image.png
再看一下先在resources目录下先建立META-INF文件夹,再建立services文件夹的方式,生成的class文件夹目录结构:
image.png
解决方案比较蠢,多次点击new package的方式建立多级目录。










网友评论