Lombok 在已编译的 class 中创建获取和设置,但不在 Eclipse 2020-09 中创建生成源
Lombok creating gets and sets in compiled class but not the generated-sources in Eclipse 2020-09
我已经使用 java -jar lombok-1.18.14.jar
安装了 Lombok,在 Eclipse 2020-09 (4.17) 中收到成功消息,但它没有出现在关于 window 中。
pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>redact</groupId>
<artifactId>redact</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.plugin>3.5.1</maven.compiler.plugin>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<failOnMissingWebXml>false</failOnMissingWebXml>
<springFramework>5.2.9.RELEASE</springFramework>
<springSecurity>5.4.1</springSecurity>
<thymeleaf>3.0.11.RELEASE</thymeleaf>
<thymeleafSecurity>3.0.4.RELEASE</thymeleafSecurity>
<mysql>8.0.21</mysql>
<logback>1.2.3</logback>
<slf4j>1.7.30</slf4j>
<mapStruct>1.4.0.Final</mapStruct>
<lombok>1.18.14</lombok>
</properties>
<dependencies>
<!-- Servlet API Dependency -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
</dependency>
<!-- Spring Framework Dependencies -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${springFramework}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${springFramework}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${springFramework}</version>
</dependency>
<!-- Spring Data Dependencies -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>2.3.4.RELEASE</version>
</dependency>
<!-- Spring Security Dependencies -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>${springSecurity}</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>${springSecurity}</version>
</dependency>
<!-- Spring JDBC dependency -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${springFramework}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.persistence/javax.persistence-api -->
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>javax.persistence-api</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.13.Final</version>
</dependency>
<!-- Mysql connector dependency -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql}</version>
</dependency>
<!-- JSTL Dependency -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- Thymeleaf -->
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf</artifactId>
<version>${thymeleaf}</version>
</dependency>
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring5</artifactId>
<version>${thymeleaf}</version>
</dependency>
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-springsecurity5</artifactId>
<version>${thymeleafSecurity}</version>
</dependency>
<!-- Logback -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>${logback}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-mapstruct-binding</artifactId>
<version>0.1.0</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>${mapStruct}</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${mapStruct}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.4.22.Final</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven.compiler.plugin}</version>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok}</version>
</path>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${mapStruct}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
</build>
</project>
eclipse.ini:
-startup
plugins/org.eclipse.equinox.launcher_1.5.800.v20200727-1323.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.1300.v20200819-0940
-product
org.eclipse.epp.package.jee.product
-showsplash
org.eclipse.epp.package.common
--launcher.defaultAction
openFile
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vmargs -javaagent:D:\dev\eclipse\lombok.jar -Xbootclasspath/a:D:\dev\eclipse\lombok.jar
-Dosgi.requiredJavaVersion=11
-Dosgi.instance.area.default=@user.home/eclipse-workspace
-XX:+UseG1GC
-XX:+UseStringDeduplication
--add-modules=ALL-SYSTEM
-Dosgi.requiredJavaVersion=11
-Dosgi.dataAreaRequiresExplicitInit=true
-Xms256m
-Xmx2048m
--add-modules=ALL-SYSTEM
-javaagent:D:\dev\eclipse\lombok.jar
原来我安装Lombok的时候只包含了最后一个-javaagent
。我一打开 Eclipse,就发生了 lombok/launch/PatchFixesHider$Transform 错误 (as explained here).
我尝试再次安装,并从安装程序中看到有关 -vm
和 -vmargs
的信息。它说如果有自定义 -vm 参数,则还需要将 -vmargs -javaaggent:lombok.jar
(全部放在一起)。我的 .ini 文件中没有 -vm,但我还是按照指示更改了文件以在 -vmargs 之后包含 -javaagent 以进行测试。补丁报错停止了,但是安装还是不行
我使用 -javaagent 参数尝试了所有可能性,只有当我将参数与 -vmargs 放在同一行时,补丁错误才会停止。
如果我删除最后一行 -javaagent 或 -Xbootclasspath 标记,没有任何变化。
我尝试将 Lombok 版本 1.18.8
安装到 1.18.14
和 Eclipse Photon
、2020-06
和 2020-09
(所有可能的组合)和 none成功了。
当我把例如user.getPassword()
,我从 Eclipse 中得到一个错误(方法未定义),但 Maven 可以正确构建和安装(通过 bash 或通过 Eclipse 运行 作为 Maven)
我正在使用 MapStruct 并且正在为它们正确创建生成的源。
我在测试中意识到的事情:有时我运行使用bash清理maven并安装,因为它更快并且生成的源是为MapStruct创建的,而不是为龙目岛。所以,我遇到了与 Eclipse 相同的问题。那么,问题出在 Eclipse 还是 Maven 上?是否会使用纯 mvn 安装创建 Lombok 源代码?
版本:
- jdk1.8.0_172
- jdk-11.0.8(只安装使用Eclipse 2020-09)
- Lombok 1.18.8/10/12/14(试过所有版本)
- Eclipse Photon/2020-06/2020-09(尝试了所有这些版本)
Lombok 1.18.14 fails to be installed in Eclipse 2020-09 (4.17.0).
作为此已知问题的解决方法改用Lombok 1.18.12。
经过多次尝试和失败,我可以让它工作。
此问题与 this issue 有关。
我尝试安装许多不同的 Lombok 版本,从 1.18.8 到 1.18.14 一直失败。为了进行最后一次测试,我从我的 .m2 存储库中删除了所有版本,只保留了 1.18.12 版本,运行 再次安装并且它成功了。
如果有人遇到这个问题,我的建议是从 .m2 存储库中清除所有版本的 Lombok,从 eclipse.ini 文件中删除任何引用 Lombok 的 -javaagent 并使用 1.18.12 版本进行全新安装。
非常感谢@howlger 帮助了我很多并向我展示了问题。
我已经使用 java -jar lombok-1.18.14.jar
安装了 Lombok,在 Eclipse 2020-09 (4.17) 中收到成功消息,但它没有出现在关于 window 中。
pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>redact</groupId>
<artifactId>redact</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.plugin>3.5.1</maven.compiler.plugin>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<failOnMissingWebXml>false</failOnMissingWebXml>
<springFramework>5.2.9.RELEASE</springFramework>
<springSecurity>5.4.1</springSecurity>
<thymeleaf>3.0.11.RELEASE</thymeleaf>
<thymeleafSecurity>3.0.4.RELEASE</thymeleafSecurity>
<mysql>8.0.21</mysql>
<logback>1.2.3</logback>
<slf4j>1.7.30</slf4j>
<mapStruct>1.4.0.Final</mapStruct>
<lombok>1.18.14</lombok>
</properties>
<dependencies>
<!-- Servlet API Dependency -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
</dependency>
<!-- Spring Framework Dependencies -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${springFramework}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${springFramework}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${springFramework}</version>
</dependency>
<!-- Spring Data Dependencies -->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-jpa</artifactId>
<version>2.3.4.RELEASE</version>
</dependency>
<!-- Spring Security Dependencies -->
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-web</artifactId>
<version>${springSecurity}</version>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-config</artifactId>
<version>${springSecurity}</version>
</dependency>
<!-- Spring JDBC dependency -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${springFramework}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.persistence/javax.persistence-api -->
<dependency>
<groupId>javax.persistence</groupId>
<artifactId>javax.persistence-api</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.0.13.Final</version>
</dependency>
<!-- Mysql connector dependency -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql}</version>
</dependency>
<!-- JSTL Dependency -->
<dependency>
<groupId>jstl</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<!-- Thymeleaf -->
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf</artifactId>
<version>${thymeleaf}</version>
</dependency>
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring5</artifactId>
<version>${thymeleaf}</version>
</dependency>
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-springsecurity5</artifactId>
<version>${thymeleafSecurity}</version>
</dependency>
<!-- Logback -->
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-core</artifactId>
<version>${logback}</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>${logback}</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-mapstruct-binding</artifactId>
<version>0.1.0</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>${mapStruct}</version>
</dependency>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${mapStruct}</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-entitymanager</artifactId>
<version>5.4.22.Final</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>${maven.compiler.plugin}</version>
<configuration>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok}</version>
</path>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${mapStruct}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
</build>
</project>
eclipse.ini:
-startup
plugins/org.eclipse.equinox.launcher_1.5.800.v20200727-1323.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.1300.v20200819-0940
-product
org.eclipse.epp.package.jee.product
-showsplash
org.eclipse.epp.package.common
--launcher.defaultAction
openFile
--launcher.defaultAction
openFile
--launcher.appendVmargs
-vmargs -javaagent:D:\dev\eclipse\lombok.jar -Xbootclasspath/a:D:\dev\eclipse\lombok.jar
-Dosgi.requiredJavaVersion=11
-Dosgi.instance.area.default=@user.home/eclipse-workspace
-XX:+UseG1GC
-XX:+UseStringDeduplication
--add-modules=ALL-SYSTEM
-Dosgi.requiredJavaVersion=11
-Dosgi.dataAreaRequiresExplicitInit=true
-Xms256m
-Xmx2048m
--add-modules=ALL-SYSTEM
-javaagent:D:\dev\eclipse\lombok.jar
原来我安装Lombok的时候只包含了最后一个-javaagent
。我一打开 Eclipse,就发生了 lombok/launch/PatchFixesHider$Transform 错误 (as explained here).
我尝试再次安装,并从安装程序中看到有关 -vm
和 -vmargs
的信息。它说如果有自定义 -vm 参数,则还需要将 -vmargs -javaaggent:lombok.jar
(全部放在一起)。我的 .ini 文件中没有 -vm,但我还是按照指示更改了文件以在 -vmargs 之后包含 -javaagent 以进行测试。补丁报错停止了,但是安装还是不行
我使用 -javaagent 参数尝试了所有可能性,只有当我将参数与 -vmargs 放在同一行时,补丁错误才会停止。
如果我删除最后一行 -javaagent 或 -Xbootclasspath 标记,没有任何变化。
我尝试将 Lombok 版本 1.18.8
安装到 1.18.14
和 Eclipse Photon
、2020-06
和 2020-09
(所有可能的组合)和 none成功了。
当我把例如user.getPassword()
,我从 Eclipse 中得到一个错误(方法未定义),但 Maven 可以正确构建和安装(通过 bash 或通过 Eclipse 运行 作为 Maven)
我正在使用 MapStruct 并且正在为它们正确创建生成的源。
我在测试中意识到的事情:有时我运行使用bash清理maven并安装,因为它更快并且生成的源是为MapStruct创建的,而不是为龙目岛。所以,我遇到了与 Eclipse 相同的问题。那么,问题出在 Eclipse 还是 Maven 上?是否会使用纯 mvn 安装创建 Lombok 源代码?
版本:
- jdk1.8.0_172
- jdk-11.0.8(只安装使用Eclipse 2020-09)
- Lombok 1.18.8/10/12/14(试过所有版本)
- Eclipse Photon/2020-06/2020-09(尝试了所有这些版本)
Lombok 1.18.14 fails to be installed in Eclipse 2020-09 (4.17.0).
作为此已知问题的解决方法改用Lombok 1.18.12。
经过多次尝试和失败,我可以让它工作。
此问题与 this issue 有关。
我尝试安装许多不同的 Lombok 版本,从 1.18.8 到 1.18.14 一直失败。为了进行最后一次测试,我从我的 .m2 存储库中删除了所有版本,只保留了 1.18.12 版本,运行 再次安装并且它成功了。
如果有人遇到这个问题,我的建议是从 .m2 存储库中清除所有版本的 Lombok,从 eclipse.ini 文件中删除任何引用 Lombok 的 -javaagent 并使用 1.18.12 版本进行全新安装。
非常感谢@howlger 帮助了我很多并向我展示了问题。