Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当使用Gradle从导入的Java库中使用Groovy trait时,不正确的Java字节码(缺少注释枚举参数)_Java_Gradle_Groovy_Traits - Fatal编程技术网

当使用Gradle从导入的Java库中使用Groovy trait时,不正确的Java字节码(缺少注释枚举参数)

当使用Gradle从导入的Java库中使用Groovy trait时,不正确的Java字节码(缺少注释枚举参数),java,gradle,groovy,traits,Java,Gradle,Groovy,Traits,我面临着一些我自己无法解决的奇怪行为 我有以下特点: @MappedSuperclass trait CreatedAt implements ICreatedAt { private LocalDateTime createdAt; @Column(name = "CREATED_AT", nullable = false, updatable = false) @CreatedDate @Access(AccessType.PROPER

我面临着一些我自己无法解决的奇怪行为

我有以下特点:

@MappedSuperclass
trait CreatedAt implements ICreatedAt {

    private LocalDateTime createdAt;

    @Column(name = "CREATED_AT", nullable = false, updatable = false)
    @CreatedDate
    @Access(AccessType.PROPERTY)
    LocalDateTime getCreatedAt() {
        return this.createdAt
    }

    void setCreatedAt(LocalDateTime createdAt) {
        this.createdAt = createdAt
    }
}
我有一个groovy类MyClazz实现了这一点

@Entity
@EntityListeners([AuditingEntityListener.class])
@Table(name = "APP")
class App extends SequenceIdEntity<Long> implements CreatedAt {

    @Column(name = "CLOUD_ID", nullable = false)
    String cloudId;
    ...
    ...
}

但当trait位于使用gradle导入的外部库中时,MyClazz(不同的部分)文件的.class文件如下所示:

    @Column(nullable = false, name = "CREATED_AT", updatable = false)
    @CreatedDate
    @Access(AccessType.PROPERTY)
    @TraitBridge(traitClass = CreatedAt.class, desc = "()Ljava/time/LocalDateTime;")
    public LocalDateTime getCreatedAt() {
    ...
    }

    @Column(nullable = false, name = "CREATED_AT", updatable = false)
    @CreatedDate
    @Access
    @TraitBridge(traitClass = CreatedAt.class, desc = "()Ljava/time/LocalDateTime;")
    public LocalDateTime getCreatedAt() {
    ...
    }
因此,不同之处在于导入时缺少@Access(AccessType.PROPERTY)枚举参数 我还试图检查jar文件中的trait是什么样子的,注释参数是否存在。我还完全手动删除了所有缓存,并从零开始将projets重新导入intelliJ以确保安全

这给我目前正在实施的事情带来了很大的问题,所以我的问题是。。。 是GradleGroovy插件造成的吗?还是别的什么? 有没有办法更深入地挖掘? 有什么解决办法吗

我目前还不确定下一步该怎么做

使用的版本有Gradle 6.7、Groovy 2.5.13和Java 11

谢谢你给我提的建议


Lukas

同样的行为也在Groovy 3.0.6和Java 15上重现