我正在尝试使用Gradle在Kotlin应用程序中使用Ebean。
我在GitHub上有很多例子,我很确定我的代码没问题,但我一直收到这个错误:
Caused by: java.lang.IllegalStateException: Bean class com.xxx.domain.Customer is not enhanced?
at io.ebeaninternal.server.deploy.BeanDescriptorManager.setEntityBeanClass(BeanDescriptorManager.java:1413)
at io.ebeaninternal.server.deploy.BeanDescriptorManager.createByteCode(BeanDescriptorManager.java:1285)
at io.ebeaninternal.server.deploy.BeanDescriptorManager.readDeployAssociations(BeanDescriptorManager.java:1207)
at io.ebeaninternal.server.deploy.BeanDescriptorManager.readEntityDeploymentAssociations(BeanDescriptorManager.java:710)
at io.ebeaninternal.server.deploy.BeanDescriptorManager.deploy(BeanDescriptorManager.java:325)
at io.ebeaninternal.server.core.InternalConfiguration.<init>(InternalConfiguration.java:141)
at io.ebeaninternal.server.core.DefaultContainer.createServer(DefaultContainer.java:130)
at io.ebeaninternal.server.core.DefaultContainer.createServer(DefaultContainer.java:79)
at io.ebeaninternal.server.core.DefaultContainer.createServer(DefaultContainer.java:44)
at io.ebean.EbeanServerFactory.create(EbeanServerFactory.java:55)
at io.ebean.Ebean$ServerManager.getWithCreate(Ebean.java:201)
at io.ebean.Ebean$ServerManager.<init>(Ebean.java:159)
... 6 more
这是我的build.gradle代码:
buildscript {
ext.kotlin_version = '1.2.31'
repositories {
mavenCentral()
}
dependencies {
classpath "io.ebean:ebean-gradle-plugin:10.2.2"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
apply plugin: 'kotlin'
apply plugin: 'kotlin-kapt'
apply plugin: 'application'
apply plugin: 'ebean'
mainClassName = 'com.xxx.HelloWorldKt'
defaultTasks 'run'
repositories {
mavenCentral()
}
dependencies {
kapt "io.ebean:kotlin-querybean-generator:10.1.2"
compile group: 'mysql', name: 'mysql-connector-java', version: '6.0.6'
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
compile "io.ebean:ebean:10.3.1"
compile "io.ebean:ebean-querybean:10.3.1"
testCompile 'junit:junit:4.11'
testCompile "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"
}
kapt {
generateStubs = true
}
sourceSets {
main.kotlin.srcDirs += [file("$buildDir/generated/source/kaptKotlin/main")]
}
我在IntelliJ中安装了2个插件。
两者都被激活。
这是我的Bean代码
import io.ebean.Model
import javax.persistence.Entity
import javax.persistence.Id
@Entity
class Customer : Model() {
@Id
var id: Long = 0
var name: String = ""
var version: Long = 0
}
我尝试使用“应用配置”和“Gradle配置”运行应用。两者都做同样的错误。
我可以看到QCustomer生成的代码在那里,但我一直都在接收这个错误。
我做错了什么?
谢谢!
答案 0 :(得分:0)
要检查此问题有4件事:
1)由于我使用相同的代码完成了多次测试,我的“build”文件夹中充满了以前生成的代码,“Rebuild”功能没有清理它。我做了删除自己+完全“重建”,它删除了很多错误信息。但缺少其他东西。
2)确保“resource”文件夹中的文件“ebean.mf”具有正确的“entity-packages”和“transactional-packages”。就我而言,它是com.xxx.domain
。这是需要增强功能并包含模型的文件夹。
3)如果您正在使用“应用程序”配置设置(使用IDE启动应用程序),请确保安装并激活正确的Ebean Enhancement插件。就我而言,我只需要Ebean 10.x Enhancement插件。
4)如果您使用“gradle”配置设置,请确保sourceSets设置如下:
sourceSets {
main.kotlin.srcDirs += [file("$buildDir/generated/source/kaptKotlin/main")]
}
希望有所帮助。我花了很多时间在这上面。