STS 3.9.4无法识别Lombok注解问题求助
我之前在Ubuntu环境折腾STS和Lombok兼容的时候也踩过不少坑,给你几个没提到的方向试试:
确认STS自身的JDK环境与项目一致
Ubuntu系统很容易同时存在多个JDK版本,STS启动时用的JDK可能和你项目配置的Java 8不是同一个。你可以通过Help -> About -> Installation Details -> Configuration搜索java.home,查看STS实际使用的JDK路径。如果不是你的Java 8路径,需要修改STS.ini,在-vmargs参数之前添加指定JDK的路径,比如:-vm /usr/lib/jvm/java-8-openjdk-amd64/bin/java注意
-vm和路径要分两行写,顺序不能错。验证Lombok Agent是否真正生效
写一个简单的测试类,比如:import lombok.Data; @Data public class TestLombok { private String name; private int age; }编译后到
target/classes目录下,执行javap -p TestLombok命令。如果输出里能看到自动生成的getter/setter方法,说明Lombok在编译层面生效了,问题可能出在STS编辑器的配置;如果看不到,那就是Agent没加载成功,再检查STS.ini里的-javaagent路径是否为绝对路径、有没有拼写错误(Ubuntu路径区分大小写)。开启STS的注解处理器支持
STS默认可能没开启注解处理器,导致编辑器识别不了Lombok生成的方法。打开Window -> Preferences -> Java -> Compiler -> Annotation Processing,勾选Enable annotation processing;然后切换到Factory Path标签,点击Add External JARs添加你安装的lombok.jar,之后重启STS并执行Project -> Clean...清理项目。完善Maven的注解处理器配置
除了pom.xml里的Lombok依赖,还可以明确配置Maven编译时的注解处理器路径,避免依赖环境变量的问题:<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>1.8</source> <target>1.8</target> <annotationProcessorPaths> <path> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.20</version> </path> </annotationProcessorPaths> </configuration> </plugin> </plugins> </build>执行
mvn clean compile后,右键项目选择Maven -> Update Project...刷新STS中的项目。检查文件权限问题
Ubuntu下如果lombok.jar所在路径权限不足,STS可能无法读取。你可以把lombok.jar复制到STS安装目录的plugins文件夹(比如/opt/sts-3.9.4.RELEASE/plugins/),然后执行sudo chmod 644 /opt/sts-3.9.4.RELEASE/plugins/lombok-1.16.20.jar赋予可读权限,再重启STS。尝试兼容更好的Lombok版本
STS 3.9.4对应的Eclipse版本是Oxygen,Lombok 1.16.20和Oxygen的兼容性可能存在小问题。可以试试Lombok 1.18.2(这个版本对Oxygen支持更稳定),重新安装配置后再测试。
内容的提问来源于stack exchange,提问作者Marco Queiroz

