android - 在libgdx游戏中配置groovy时出错

标签 android gradle groovy libgdx

我几天前开始学习ligdx。我试图将groovy配置为可以在游戏的核心项目中使用,但是每次运行该应用程序时,都会遇到以下异常:

Error:Gradle: Execution failed for task :core:compileJava.

Error:Cannot compile Groovy files: no Groovy library is defined for module 'core'

Compilation failed; see the compiler error output for details.

Error:(16, 23) Gradle: error: cannot find symbol class testClass

Error:(16, 23) Gradle: error: cannot find symbol class testClass


我的代码是:
public class MyGdxGame extends ApplicationAdapter {
SpriteBatch batch;
Texture img;

@Override
public void create () {
    batch = new SpriteBatch();
    img = new Texture("badlogic.jpg");
    testClass test = new testClass();
}

@Override
public void render () {
    Gdx.gl.glClearColor(1, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    batch.begin();
    batch.draw(img, 0, 0);
    batch.end();
}

@Override
public void dispose () {
    batch.dispose();
    img.dispose();


}
}
class testClass {

def scddsds(){
    println('scddsds')
}
}
全局gradle文件为:
    buildscript {
    repositories {
        mavenLocal()
        mavenCentral()
        maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.0.0'

    }
}

allprojects {
    apply plugin: "eclipse"
    apply plugin: "idea"

    version = '1.0'
    ext {
        appName = "groovy-test"
        gdxVersion = '1.9.3'
        roboVMVersion = '2.1.0'
        box2DLightsVersion = '1.4'
        ashleyVersion = '1.7.0'
        aiVersion = '1.8.0'
    }

    repositories {
        mavenLocal()
        mavenCentral()
        maven { url "https://oss.sonatype.org/content/repositories/snapshots/" }
        maven { url "https://oss.sonatype.org/content/repositories/releases/" }
    }
}

project(":desktop") {
    apply plugin: "java"


    dependencies {
        compile project(":core")
        compile "com.badlogicgames.gdx:gdx-backend-lwjgl:$gdxVersion"
        compile "com.badlogicgames.gdx:gdx-platform:$gdxVersion:natives-desktop"
    }
}

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"
    }
}

project(":core") {
    apply plugin: "java"


    dependencies {
        compile "com.badlogicgames.gdx:gdx:$gdxVersion"
        compile 'org.codehaus.groovy:groovy:2.4.6:grooid'
    }
}

tasks.eclipse.doLast {
    delete ".project"
}
核心项目的构建是:
   apply plugin: "java"

sourceCompatibility = 1.6
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'

sourceSets.main.java.srcDirs = [ "src/" ]


eclipse.project {
    name = appName + "-core"
}

   
我正在使用Android Studio。

最佳答案

最终,我设法使其正常运行。
首先必须配置全局build.gradle:

project(":core") {
    apply plugin: "java"
    apply plugin: "groovy"

    dependencies {
        compile "com.badlogicgames.gdx:gdx:$gdxVersion"
        compile group: 'org.codehaus.groovy', name: 'groovy-all', version: '2.4.7'

    }
}

我仅将groovy添加到了核心项目中,并且看起来工作正常。

然后添加到核心项目的gradle构建中:
apply plugin: "java"
apply plugin: "groovy"
sourceCompatibility = 1.6
[compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
sourceSets {
    main {
        java { srcDirs = [] } 
        groovy { srcDir "src" }
    }
}
eclipse.project {
    name = appName + "-core"
}
dependencies {
}

有关带有源集的“魔术”的更多信息,请参见this答案。

顺便说一句,我为groovy类创建了单独的文件夹,因此项目结构如下:
src   
 --main
    --java
    --groovy

关于android - 在libgdx游戏中配置groovy时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38285929/

相关文章:

java - 在gradle依赖项和Java项目中导入AWS Textract

web-services - 是否建议为 REST API 使用单独的 Controller ?

grails - Google Calendar API 事件地点

grails - 访问表单时清除现有记录的字段

java - Arraylist 只检索最后一个值

android - context.getApplicationInfo().name 始终为空

java - 转向点脚本不起作用

java - 根据从 Json 解析的项目更改 listView 行背景颜色

android - 使用基于 Gradle 的配置时在 Android Studio (IntelliJ) 上运行简单的 JUnit 测试

java - 使用 gradle 从 javadoc 中排除 R.java 的正确方法