Ломбок не признается в проекте LibGDX - PullRequest
1 голос
/ 22 мая 2019

Я работаю над проектом libGDX и хочу использовать Lombok.Я следовал этому короткому учебнику об использовании lombok в проектах libGDX, но, к сожалению, он не работает.

Ситуация выглядит так: IntelliJ распознает lombok и не жалуется на методы get / set, нокогда я хочу запустить проект (используя gradle), возникает ошибка компилятора java, например

ошибка: не удается найти статический конструктор символов

ошибка: не удается найти метод символа setBoardSize (float a, float b)

так что в основном Ломбок не распознается.

Обычно рекомендуется установить включить обработку аннотаций в IntelliJ, но я попытался безуспешно - я также попытался переустановить плагин Lombok, изменив версию Lombok на 1.18.8, добавивв раздел build.gradle для Android

annotationProcessor "org.projectlombok: lombok: 1.16.6"

, но проблема не устранена.Я также считаю, что это не проблема IntelliJ, потому что когда я пытаюсь запустить проект из командной строки gradle, используя

gradlew desktop: run

, он не работаети у меня та же самая трассировка стека

У кого-нибудь была такая же проблема?Как решить эту проблему?

Я прикрепляю свой 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"
}

1 Ответ

0 голосов
/ 03 июля 2019

Тьфу - так, наконец, я нашел проблему, и это было довольно удивительно Оказалось, что моя конфигурация была в порядке, 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 () ) :)

Несколько ссылок ниже на эту тему:

...