Kotlin에 Java Lombok 접근자가 표시되지 않나요?
Kotlin 1.0.0 릴리스 사용 (IntelliJ 15에서 컴파일).
println(myPojoInstance.foo)
Lombok 기반 POJO를 참조하는 코드 (IntelliJ 또는 Gradle에서)를 컴파일하려고하면 " 'foo'에 액세스 할 수 없습니다."MyPojo "에서 'private'입니다. 사실, 모두 비공개이며 내 개체입니다. lombok 주석에 대한 @Value @Builder가 있습니다.
특별히 getFoo ()를 호출 해 보았지만 "getFoo에 대한 미해결 참조"라고 표시됩니다. Kotlin에게 롬복 주석을 처리하는 방법을 알리는 몇 가지 트릭이 있습니까?
일반적으로 그렇지 않습니다. 그 동작의 이유는 Lombok이 javac에 대한 주석 프로세서이지만 kotlin 컴파일러가 실행될 때 javac도 사용하지만 주석 처리가 없기 때문에 kotlin은 아직 생성되지 않은 선언을 볼 수 없습니다.
현재 유일한 해결 방법은 엄격한 컴파일 순서를 정의하는 것입니다. Java는 먼저 kotlin 이후입니다. 안타깝게도이 접근 방식에는 큰 단점이 있습니다.이 경우 Java의 Kotlin 코드를 사용할 수 없습니다. 이를 해결하려면 많은 고통을 유발할 수있는 다중 모듈 프로젝트가 필요할 수 있습니다.
Sergey Mashkov의 응답에 추가하기 위해 (여기에 댓글을 달 수있는 담당자 포인트가 충분하지 않습니다.) 여기 에 Kotlin이 Kapt 또는 delomboking없이 Lombok에서 생성 된 코드를 볼 수있는 Gradle 다중 프로젝트 설정 의 예제 앱 이 있습니다. 적용해야합니다. 즉, Kotlin은 자바 코드를 호출 할 수 있지만 자바는 특정 모듈에서 Kotlin 코드를 호출 할 수 없습니다 (순환 종속성을 생성하므로). 이러한 종류의 빌드는 기존 자바 코드베이스가 있고 하지만 모든 새로운 코드는 Kotlin으로 작성되었습니다.
하지만 Lombok / Kotlin의 완전한 지원을보고 싶습니다. Kotlin은 Java와 완전히 상호 운용되지만 실제로는 Lombok이 매우 널리 사용되며이 문제로 인해 Kotlin으로 전환하려는 많은 개발자가 그렇게하지 못할 수 있습니다.
위의 주석에서 언급했듯이 delombok이 도움이됩니다. maven 빌드의 경우 다음과 같습니다.
<plugin>
<groupId>org.projectlombok</groupId>
<artifactId>lombok-maven-plugin</artifactId>
<version>${lombok.version}.0</version>
<executions>
<execution>
<id>delombok</id>
<phase>generate-sources</phase>
<goals>
<goal>delombok</goal>
</goals>
<configuration>
<formatPreferences>
<javaLangAsFQN>skip</javaLangAsFQN>
</formatPreferences>
<verbose>true</verbose>
</configuration>
</execution>
<execution>
<id>test-delombok</id>
<phase>generate-test-sources</phase>
<goals>
<goal>testDelombok</goal>
</goals>
<configuration>
<verbose>true</verbose>
</configuration>
</execution>
</executions>
</plugin>
사이트 에 따라 delombok을 사용 하고 build> plugins> plugin> kotlin-maven-plugin 아래의 pom.xml에 target / generated-sources / delombok 폴더를 추가하면 작동하는 것 같습니다.
참조 URL : https://stackoverflow.com/questions/35517325/kotlin-doesnt-see-java-lombok-accessors
'Development Tip' 카테고리의 다른 글
캐시를 사용하지 않는 Curl 명령 (0) | 2021.01.09 |
---|---|
온라인 PHP IDE가 있습니까? (0) | 2021.01.09 |
정규식 "독립 캡처 그룹"이란 무엇입니까? (0) | 2021.01.08 |
자바 스크립트에서 뒤로 버튼 이벤트를 잡는 방법이 있습니까? (0) | 2021.01.08 |
요소에서 창으로 스크롤 버블 링 방지 (0) | 2021.01.08 |