我刚刚发现Lombok,Spring-Tool-Suite出现了奇怪的行为,并且发现我正在使用JDK代替JRE运行STS。
这是我在STS.ini
中的当前配置:
-startup
plugins/org.eclipse.equinox.launcher_1.5.0.v20180512-1130.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.700.v20180518-1200
-product
org.springsource.sts.ide
--launcher.defaultAction
openFile
-vm
C:\development\applications\Java\jdk-8\bin\javaw.exe
-vmargs
-Dosgi.requiredJavaVersion=1.8
--add-modules=ALL-SYSTEM
-Xms40m
-Dosgi.module.lock.timeout=10
-Dorg.eclipse.swt.browser.IEVersion=10001
-Xmx1200m
-javaagent:C:\development\applications\sts-3.9.5.RELEASE\lombok.jar
在IDE中,出现错误The method […] is undefined for the type […]
。
但是,IDE似乎知道该方法确实存在……
我们可以看到,Lombok已正确安装在STS中。
但是,如果我在JRE中使用以下配置,则不会再出现lombok错误,而是POM中的一个问题,要求我使用JDK启动IDE:
-startup
plugins/org.eclipse.equinox.launcher_1.5.0.v20180512-1130.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.700.v20180518-1200
-product
org.springsource.sts.ide
--launcher.defaultAction
openFile
-vm
C:\development\applications\Java\jre-8\bin\javaw.exe
-vmargs
-Dosgi.requiredJavaVersion=1.8
--add-modules=ALL-SYSTEM
-Xms40m
-Dosgi.module.lock.timeout=10
-Dorg.eclipse.swt.browser.IEVersion=10001
-Xmx1200m
-javaagent:C:\development\applications\sts-3.9.5.RELEASE\lombok.jar
在使用JDK运行Lombok时,是否有人对如何在STS中管理Lombok有任何想法?因为我真的不想看到任何错误……
编辑01
我将VM设置为直接在STS.ini
文件内部使用以进行测试。但是,当从PATH
环境变量使用JDK或JRE时,我确实得到了相同的错误。
编辑02
以下是Insurance
bean的代码:
@Getter
@Setter
@Embeddable
public class Insurance implements Serializable {
private static final long serialVersionUID = 1L;
@Size(max = 255)
private String name;
@Size(max = 255)
private String number;
@ApiModelProperty(example = "2018-01-01")
private LocalDate validityPeriodBegin;
@ApiModelProperty(example = "2018-12-31")
private LocalDate validityPeriodEnd;
@Embedded
private Address address;
}
编辑03
只需查找一下,但是我在IDE中遇到的错误不仅限于Lombok生成的getter / setter。我也从继承中得到这种错误……
我们可以看到,save
和deleteById
方法都被标记了,但是这些方法是从CrudRepository
继承的……
@Repository
public interface StructureRepository extends CrudRepository<Structure, String> {
Collection<Structure> findByParentIsNull();
Collection<Structure> findByParentId(String id);
Collection<Structure> findByAgentsLogin(String login);
}
我还尝试使用最新版本的Eclipse代替STS,并且得到的行为完全相同。
最后,我尝试使用JDK-10启动IDE,但没有得到其他结果……
这意味着它与Lombok或STS都不相关…… 可能是使用 JDK 启动 Eclipse 时遇到的问题吗?
答案 0 :(得分:0)
我现在正在使用 STS-4.0.0.RELEASE 代替 STS-3.9.5.RELEASE ,并且我正在使用 JDK-11 代替 JDK-8 。结果:没有更多的错误……
这可能是一个错误,该错误已在 STS-4.0.0.RELEASE 或 JDK-11 中修复,因为我在项目中没有做太多更改配置。