我想在 android studio 3.0 的一个项目中使用 Lombok,但我遇到了问题。注释工作正常并且没有任何错误。这是我在其中添加了 Lombok 的 Gradle 依赖项。
compileOnly "org.projectlombok:lombok:1.16.18"
annotationProcessor "org.projectlombok:lombok:1.16.18"
Run Code Online (Sandbox Code Playgroud)
我也有问题Annotation Processors。
我已按照以下步骤操作:
file>other settings>default settings启用了Annotation ProcessorsInvalidate Caches / Restart project settings设置Annotation Processors出现在Build, Execution, Deployment>Compiler以前不存在的菜单下Invalidating Cache,我检查了它的勾号。当 Android Studio 重新启动时,Annotation Processors设置消失,但插件没有显示任何错误。
做了这一切之后仍然不起作用。
import com.google.gson.annotations.SerializedName;
import lombok.Getter;
class UserModel {
@SerializedName("uid")
@Getter private String userId;
}
Run Code Online (Sandbox Code Playgroud)
这就是我定义模型的方式,但无法从中获取 getUserId 。
android annotations lombok intellij-lombok-plugin android-studio-3.0
我遇到问题\n我使用
\n\nIntelliJ IDEA 2017.3.1 \nBuild #IU-173.3942.27, built on December 11, 2017\nJRE: 1.8.0_111-b14 amd64\nJVM: Java HotSpot(TM) 64-Bit Server VM by Oracle Corporation\nWindows 7 6.1\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n\n错误:(16, 10) java: 无法解析日志
\n
import lombok.extern.slf4j.Slf4j;\nimport org.junit.Test;\n\n\n@Slf4j\npublic class LogTest {\n\n @Test\n public void testSlf4j(){\n log.info("\xe6\xb5\x8b\xe8\xaf\x95 lombok slf4j logback");\n }\n\n}\nRun Code Online (Sandbox Code Playgroud)\n\n我有配置\n设置 -> 构建、执行、部署 -> 编译器 -> 注释启用注释处理
\n\n设置 -> 其他设置 -> 龙目岛
\n\n <!-- SLF4J -->\n <dependency>\n <groupId>org.slf4j</groupId>\n <artifactId>slf4j-api</artifactId>\n <version>1.7.21</version>\n </dependency>\n <!-- Logback -->\n <dependency>\n <groupId>ch.qos.logback</groupId>\n <artifactId>logback-core</artifactId>\n <version>1.1.3</version>\n </dependency>\n <dependency>\n <groupId>ch.qos.logback</groupId>\n …Run Code Online (Sandbox Code Playgroud) 我在 Gradle 中有一个多项目。该build.gradle脚本如下所示:
buildscript {
repositories {
jcenter()
mavenCentral()
maven { url "https://plugins.gradle.org/m2/" }
}
dependencies {
classpath "com.github.jengelman.gradle.plugins:shadow:2.0.4"
classpath "io.franzbecker:gradle-lombok:1.14"
}
}
allprojects {
//apply plugin: "base"
}
subprojects {
apply plugin: "com.github.johnrengelman.plugin-shadow"
apply plugin: "idea"
apply plugin: "java"
apply plugin: "io.franzbecker.gradle-lombok"
group = "io.shido"
version = "0.1.0-SNAPSHOT"
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
repositories {
jcenter()
mavenCentral()
}
dependencies {
// [start] Research
//compileOnly "org.projectlombok:lombok:1.18.2"
// [end] Research
testCompile "nl.jqno.equalsverifier:equalsverifier:2.4.5"
testCompile "org.junit.jupiter:junit-jupiter-api:$junit_version"
testImplementation "org.junit.jupiter:junit-jupiter-params:$junit_version"
testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:$junit_version" …Run Code Online (Sandbox Code Playgroud) 我有一个带有 lombok 注释 ( @Setter)的字段,我正在寻找一种简单的方法来查找自动生成的 setter 的用法。
当我将光标放在@Setter注释上并运行Find usages(Alt+F7) 时,我显然得到了@Setter使用注释的所有位置(结果是所有包含带有 的行的类@Setter)
但是,我想找到使用此具体设置器的所有地方,因为此具体字段(我希望所有包含行的类setSomething(...)结果)
我启用了注释处理(选中了“启用注释处理”Settings->Compiler->Annotation Processors复选框)。
我也安装了 Lombok 插件,它工作正常。
我喜欢使用 Lombok,但它需要在 IDE 设置中启用注释处理器。因为开发人员使用不同的 IDE,并且 CI/CD 有自己的编译流程,而且我真的很想避免向初级开发人员解释为什么他们需要选中此复选框,所以我正在寻找一种方法来避免选中此复选框。理想情况下,我想让初级人员运行 git clone 然后 ./gradlew 运行。Gradle 有没有办法完全设置注释处理器(无需手动单击)?
如果它不仅仅适用于 IntelliJ IDEA,那就太好了。
我看到的主要问题是 Lombok 需要在 IntelliJ IDEA 中安装并激活 Lombok 插件。
是否可以通过运行以下命令来运行使用 Lombok 的项目: git clone ... && ./gradlew run ?
在切换到不同的 git 分支后,我在构建使用 Lombok 的项目时遇到了问题。我通常会收到这两种类型的多个异常:
@Setter(onMethod_ = @Autowired)
public class ClassA{
private ClassC c;
}
Run Code Online (Sandbox Code Playgroud)
我得到
java: cannot find symbol
symbol: method onMethod_()
location: @interface lombok.Setter
Run Code Online (Sandbox Code Playgroud)
@Builder
public class ClassB{
}
Run Code Online (Sandbox Code Playgroud)
我得到
java: cannot find symbol
symbol: class ClassBBuilder
location: class com.example.application.ClassB
Run Code Online (Sandbox Code Playgroud)
在像这样的方法中
private ClassB.ClassBBuilder getBuilder(Object input) {
//builder init
}
Run Code Online (Sandbox Code Playgroud)
StackOverflowError。运行gradle:clean->后问题已解决gradle:build。但是在交换分支后又出现了。更多信息:我正在使用Intellij Idea 2020.3.3 Ultimate Edition并选中复选框"Enable Annotation processing"。这是我的一些部分build.gradle:
import org.springframework.boot.gradle.plugin.SpringBootPlugin
plugins {
id 'net.ltgt.apt' version …Run Code Online (Sandbox Code Playgroud) 据我所知,Lombok使用Java的Annotation Processors来生成其他方法.
与Maven 3.5它完全无需添加任何额外的配置,只需添加dependecy龙目岛,并把一些注解一样@Getter,@Setter.
但是,如果我在IntelliJ IDEA 2018.2中打开此项目,则生成的getter/setter的所有用法都会突出显示为错误.我打开了Annotation Processing,我尝试在IntelliJ中构建项目或在Maven中构建然后在IntelliJ中使用,但它仍然需要Lombok插件来避免错误.
这是某种虫子吗?工作流程出错?或者也许龙目岛不仅使用注释处理器,还有其他一些我不知道的东西,这就是为什么IntelliJ + javac无法弄清楚如何处理它?这很奇怪,因为javac本身编译这些文件没有错误
我知道有很多问题"我在使用Lombok时遇到错误"和"使用插件"之类的答案.我不是在问我是否应该使用插件,但为什么我应该使用它,为什么IntelliJ无法在没有插件的情况下处理它而javac呢
java intellij-idea annotation-processing lombok intellij-lombok-plugin
最近开始使用IntelliJ IDE。我试图在IntelliJ中打开一个Android项目,该项目是在Android Studio IDE中构建的。但这导致了许多问题。无法解决的问题之一是transformClassesWithDexBuilderForDebug。
我已经尝试了所有可能的dex问题解决方案,但似乎没有任何效果。
在研究--stacktrace时发现了这一点
错误处理C:\ Users \ prath.gradle \ caches \ modules-2 \ files-2.1 \ org.projectlombok ** lombok ** \ 1.18.2 \ 524e0a697e9d62950b2f763d88d35cd8dc82a9a1 \ lombok-1.18.2.jar java.lang。RuntimeException 在org.objectweb.asm.ClassReader.readModule(ClassReader.java:731)在org.objectweb.asm.ClassVisitor.visitModule(ClassVisitor.java:148)在org.objectweb.asm.ClassReader.accept(ClassReader.java:632) ),位于com.android.builder.desugaring.DesugaringClassAnalyzer.analyze(DesugaringClassAnalyzer.java:144)的org.objectweb.asm.ClassReader.accept(ClassReader.java:500)上,com.android.builder.desugaring.DesugaringClassAnalyzer.analyzeJar( com.android.builder.desugaring上的DesugaringClassAnalyzer.java:92)。com.android.build.gradle.internal.transforms.DesugarIncrementalTransformHelper.lambda $ GetInitalGraphData $ 4(DesugarInformer。 ),位于java.util.concurrent.ForkJoinTask $ AdaptedCallable.exec(ForkJoinTask.java:1448)在java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:290)在java.util.concurrent.ForkJoinPool $ WorkQueue.topLevelExec(ForkJoinPool.java:1020)在java.util.concurrent.ForkJoinPool.scan(ForkJoinPool .java:1656),位于java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1594),位于java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:177)
任务:app:transformClassesWithDexBuilderForDebug失败的java.lang.RuntimeException:java.base / jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native方法)处的java.lang.RuntimeException java.base / jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62 )的java.base / jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)的java.base / java.lang.reflect.Constructor.newInstance(Constructor.java:490)的java.base / java。 java.base / java.util.concurrent.ForkJoinTask.reportException(ForkJoinTask.java:678)上的util.concurrent.ForkJoinTask.getThrowableException(ForkJoinTask.java:600)在java.base / java.util.concurrent.ForkJoinTask.join( ForkJoinTask.java:722),位于com.android.ide.common.internal.WaitableExecutor。com.android.build.gradle.internal.transforms.DesugarIncrementalTransformHelper.getInitalGraphData(DesugarIncrementalTransformHelper.java:162)的com.android.build.gradle.internal.transforms.DesugarIncremental(WaitableExecutor.java:146)的com.android.build.gradle.internal.transforms.DesugarIncremental( java:130),位于com.google.common.base.Suppliers $ NonSerializableMemoizingSupplier.get(Suppliers.java:160),位于com.android.build.gradle.internal.transforms.DesugarIncrementalTransformHelper.getDependenciesPaths(DesugarIncrementalTransformHelper.com:java:231) android.build.gradle.internal.transforms.DexArchiveBuilderTransform.getD8DesugaringCacheInfo(DexArchiveBuilderTransform.java:461)位于com.android.build.gradle.internal.transforms.DexArchiveBuilderTransform。在com.android.build.gradle.internal.pipeline.TransformTask $ 2.call(TransformTask.java:239)处转换com.android.build.gradle.internal.pipeline.TransformTask $ 2.call(DexArchiveBuilderTransform.java:375) java的com.android.builder.profile.ThreadRecorder.record(ThreadRecorder.java:102)的TransformTask.java:235)java的com.android.build.gradle.internal.pipeline.TransformTask.transform(TransformTask.java:230)的Http java.base / jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)的.base / jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(java.base / …
我有一个项目。我不使用龙目岛。我使用手动创建的 getter 和 setter。
现在,我想导入 Lombok。导入后,我将用于所有实体。
我是否必须手动添加@Data到所有实体?我必须手动删除所有实体?没有另一种方法可以自动转换这些类吗?
我找不到任何这样的问题:
似乎很多人都有这个问题,但到目前为止我研究过的问题都没有像我的问题那样基本。
我只得到了这个对象:
以及我的主要方法中的基本调用:
Bamm...已经不工作了。编译失败并出现此错误
我正在使用 IntelliJ 并安装了 Lombok 插件。
有任何想法吗 ?