LOMBOK在LIBGDX项目中没有得到认可



我正在从事libgdx项目,我想使用Lombok。我遵循了有关在libgdx项目中使用Lombok的简短教程,但不幸的是它不起作用。

情况看起来像这样-Intellij正在识别Lombok,并且不抱怨GET/SET方法,但是当我想运行项目(使用Gradle(时,有Java编译器错误,例如

错误:找不到符号静态构建器

错误:找不到符号方法setBoardsize(float a,float b(

因此,基本上没有认识到Lombok。

通常,建议是在Intellij中设置'启用注释处理',但我尝试没有成功 - 我还尝试重新安装LOMBOK插件,将Lombok版本更改为1.18.8,并添加到该版本中build.gradle android部分

AnnotationProcessor" org.projectlombok:Lombok:1.16.6"

,但没有解决这个问题。我也相信这不是Intellij的问题,因为当我尝试使用

从gradle命令行运行项目时

gradlew桌面:运行

它不起作用,我有相同的stacktrace

有人有同样的问题吗?如何解决这个问题?

我正在附加我的 build.gradle

buildscript {

    repositories {
        mavenLocal()
        mavenCentral()
        maven { url "https://plugins.gradle.org/m2/" }
        maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
        jcenter()
        google()
    }
    dependencies {
        classpath 'org.wisepersist:gwt-gradle-plugin:1.0.6'
        classpath 'com.android.tools.build:gradle:3.1.0'

    }
}
allprojects {
    apply plugin: "eclipse"
    apply plugin: "idea"
    version = '1.0'
    ext {
        appName = "light-game"
        gdxVersion = '1.9.8'
        roboVMVersion = '2.3.3'
        box2DLightsVersion = '1.4'
        ashleyVersion = '1.7.0'
        aiVersion = '1.8.0'
    }
    repositories {
        mavenLocal()
        mavenCentral()
        google()
        jcenter()
        maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
        maven { url "https://oss.sonatype.org/content/repositories/releases/" }
    }
}
project(":desktop") {
    apply plugin: "java"
    apply plugin: "war"

    dependencies {
        compile project(":core")
        compile "com.badlogicgames.gdx:gdx-backend-lwjgl:$gdxVersion"
        compile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop"
        compile "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-desktop"
        providedCompile "org.projectlombok:lombok:1.16.6"
    }
}
project(":android") {
    apply plugin: "android"
    configurations { natives }
    dependencies {
        compile project(":core")
        compile "com.badlogicgames.gdx:gdx-backend-android:$gdxVersion"
        natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi"
        natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-armeabi-v7a"
        natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-arm64-v8a"
        natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86"
        natives "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-x86_64"
        compile "com.badlogicgames.gdx:gdx-box2d:$gdxVersion"
        natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi"
        natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-armeabi-v7a"
        natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-arm64-v8a"
        natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-x86"
        natives "com.badlogicgames.gdx:gdx-box2d-platform:$gdxVersion:natives-x86_64"
        compile "com.badlogicgames.box2dlights:box2dlights:$box2DLightsVersion"
        provided "org.projectlombok:lombok:1.16.6"
    }
}
project(":core") {
    apply plugin: "java"
    apply plugin: "war"

    dependencies {
        compile "com.badlogicgames.gdx:gdx:$gdxVersion"
        compile "com.badlogicgames.gdx:gdx-box2d:$gdxVersion"
        compile "com.badlogicgames.box2dlights:box2dlights:$box2DLightsVersion"
        providedCompile "org.projectlombok:lombok:1.16.6"
    }
}
project(":html") {
    apply plugin: "gwt"
    apply plugin: "war"

    dependencies {
        compile project(":core")
        compile "com.badlogicgames.gdx:gdx-backend-gwt:$gdxVersion"
        compile "com.badlogicgames.gdx:gdx:$gdxVersion:sources"
        compile "com.badlogicgames.gdx:gdx-backend-gwt:$gdxVersion:sources"
        compile "com.badlogicgames.gdx:gdx-box2d:$gdxVersion:sources"
        compile "com.badlogicgames.gdx:gdx-box2d-gwt:$gdxVersion:sources"
        compile "com.badlogicgames.box2dlights:box2dlights:$box2DLightsVersion:sources"
    }
}
tasks.eclipse.doLast {
    delete ".project"
}

ugh-所以最后我找到了这个问题,这很令人惊讶。事实证明,我的配置很好,Intellij很好,但是Lombok本身有一个我不知道的问题 - 此问题是 builder((方法的静态导入,它完全弄乱了编译的字节码课程并导致我的问题

基本上我要做的就是删除

之类的进口
import static com.antkowicz.project.MyClass.builder;
public MyClass getMyClass() {
    return builder().build();
}

而不是此用法

import static com.antkowicz.project.MyClass;
public MyClass getMyClass() {
    return MyClass.builder().build();
}

似乎这个问题是众所周知的,但不会很快解决(或任何时候(,这并不是一件容易的事 - 因此,我们唯一可以做的就是将静态进口与Lombok(至少 Builder(((:)

关于此主题的一些链接:

  • 静态导入在Intellij
  • 中不在Lombok Builder中工作
  • https://github.com/rzwitserloot/lombok/issues/2044
  • https://github.com/rzwitserloot/lombok/issues/1326
  • https://github.com/rzwitserloot/lombok/issues/979

最新更新