文章目录
1. 多模块项目报错 “Module must not contain source root”
1.1 问题描述
在IDEA 中创建多模块项目时,经常会在项目结构调整(如新建或删除模块)的时候报出如下错误,导致工程编译或者标识源文件失败。这是因为在模块创建的时候有些不应该属于子模块的文件也被创建了出来,IDEA 将之记录在了模块配置的 xml 及 iml文件 中,之后尽管子模块中相干文件被删除,但是模块配置文件并没有被更新,从而导致了问题的发生。
1.2 解决方式
-
网络上搜索的一种解决方式是
点击Project Settings 中的 moduls, 模块结构界面的右侧有源文件、资源文件等目录列表,删除不是子工程该有的目录,实测并不能解决问题 -
IDEA 对模块的组织方式由 项目文件夹下的 .idea文件夹保存,切换进该文件夹会发现如下文件的存在。这些文件都由 IEDEA 生成,对项目源码影响不大,将其直接删除就可以解决问题
staff 160 10 12 10:44 modules/ staff 1003 10 12 10:26 modules.xml staff 688 10 12 10:26 test.iml
2. lombok 插件找不到符号变量错误
2.1 问题描述
在项目的 build.gradle 文件中使用以下形式配置 lombok 依赖,并且在依赖列表中也确实引入了依赖,但是使用 IDEA 编译代码的时候报出找不到符号变量的错误
dependencies {
compile("org.projectlombok:lombok:1.16.18") {
force = true
}
}
2.2 解决方式
-
首先保证 IDEA 已经下载了 lombok 的插件,之后检查是否启用了IDEA 中的注解处理
-
如果以上都没有问题,那么就应该考虑 gradle 的版本问题。在 gradle 的高版本环境(4.10.x 及以上)中,lombok 的配置方式发生改变,注解处理将不再在compile classpath中,需要手动添加到 annotation processor path。故最终的对应依赖如下:
dependencies { annotationProcessor 'org.projectlombok:lombok:1.16.18' compileOnly 'org.projectlombok:lombok:1.16.18' testAnnotationProcessor 'org.projectlombok:lombok:1.16.18' testCompileOnly 'org.projectlombok:lombok:1.16.18' }
3. Shell 配置了环境变量,但IDEA中代码未读取到
3.1 问题描述
RPC 框架需要依赖注册中心 URL 来进行服务的注册发现及请求转发,但是在终端中使用命令 export SERVICE_DNS_URL=http://xxxx 设置环境变量之后,RPC 框架并没有正常获取环境变量配置,而是使用了默认配置,从而导致本地开发时调用其他服务不通
3.2 解决方式
在 IDEA 的导航栏点开运行实例的编辑选项,点击 Edit Configurations…进入运行配置的编辑界面,选择目标实例,修改该实例的运行配置,可以手动添加环境变量、VM参数等
IDEA导航栏:
运行配置编辑界面: