【问题标题】:Gradle not loading Java class files compiled from Java source placed in buildsrcGradle 不加载从 buildsrc 中的 Java 源编译的 Java 类文件
【发布时间】:2013-10-19 02:00:45
【问题描述】:

我在 groovy 中实现了一个自定义任务。如果我为它提供一个在 groovy (X.groovy) 中实现的实用程序类并将其放置在 buildsrc 中,则该任务可以工作。如果我在 Java (Y.java) 中实现一个等效类并将其放在同一目录中,则任务将失败并显示以下错误消息:

:buildsrc:compileGroovystartup failed:
General error during conversion: Could not load class 'com.myinc.gradle.api.data.Y' 
from file:/project/buildsrc/build/classes/main/com/myinc/gradle/api/data/Y.class.

Y.class 文件存在于错误消息中指定的位置。 当 Y.java 位于任一常见位置时,构建失败:

buildsrc/src/main/groovy/.../Y.java<br>
buildsrc/src/main/java/.../Y.java

Gradle 文档说“您可以将构建源代码放在此目录中并坚持 Java/Groovy 项目的布局约定”,并且将应用其默认的 buildsrc 构建脚本。
来源:http://www.gradle.org/docs/current/userguide/organizing_build_logic.html#sec:build_sources

Project Layout 允许 Groovy 源目录包含 Groovy 和 Java 代码。
来源:http://www.gradle.org/docs/current/userguide/groovy_plugin.html#sec:groovyCompile

复制:

项目/build.gradle:

task t (type: sample.MyTask) {
  println "configuring task"
}

project/buildsrc/src/main/groovy/sample


MyTask.groovy

package sample

import org.gradle.api.DefaultTask
import org.gradle.api.tasks.TaskAction

class MyTask extends DefaultTask {
  @TaskAction
  public void task() {
    println 'task action'
    new X().m()
//  new Y().m()    // uncommenting this line should generate an error when you build 't'
  }
}

X.groovy

package sample;
class X {
  void m() {
    println "x.m"
  }
}

Y.java

package sample;
public class Y {
  void m() {
    System.out.println("y.m");
  }
}

OSX 10.8.4、IntelliJ 12.1、Gradle 1.8

【问题讨论】:

    标签: java groovy gradle


    【解决方案1】:

    在更大范围内的问题是 JDK8 的早期访问版本与 Gradle 1.8 中 groovyCompile 中的类加载器所期望的字节码版本不兼容。当我将 IntelliJ 中的语言级别改回 JDK7 时,一切正常。

    【讨论】:

      【解决方案2】:

      只是一个想法:也许它与包声明有关。 Java 在这里比 groovy 更挑剔,并希望源文件位于相应的目录中。我无法重现您的问题。您能否提供一个小型独立项目来演示您的问题?

      干杯, 勒内

      【讨论】:

      • 我在 IntelliJ 中的较大项目的上下文中运行了上面的代码,但它可以在 IntelliJ 之外的一个干净的项目中运行。我将不得不在更大的范围内找出导致问题的原因。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-18
      相关资源
      最近更新 更多