2016-10-01 58 views
0

我使用Spark Framework开始了一个小项目,我选择了ActiveJDBC作为它的ORM,它使用Gradle来构建所有的东西。IntrumentModels的任务:模型类被冻结

(更新时,它是使用ActiveJDBC 1.4.12)

这里是我的build.gradle文件:

buildscript { 
    repositories { 
     mavenCentral() 
     maven { url 'http://repo.javalite.io' } 
    } 
    dependencies { 
     classpath group: 'org.javalite', name: 'activejdbc-gradle-plugin', version: '1.4.13-SNAPSHOT' 
    } 
} 

apply plugin: 'java' 
apply plugin: 'org.javalite.activejdbc' 

repositories { 
    mavenCentral() 
} 

dependencies { 
    compile group: 'org.slf4j',    name: 'slf4j-simple',      version: '1.7.20' 
    compile group: 'com.sparkjava',   name: 'spark-core',       version: '2.5' 
    compile group: 'junit',     name: 'junit',        version: '4.12' 
    compile group: 'org.postgresql',  name: 'postgresql',       version: '9.4.1211.jre7' 
    compile group: 'org.javalite',   name: 'activejdbc',       version: '1.4.13-SNAPSHOT' 
    compile group: 'org.javalite',   name: 'activejdbc-instrumentation',   version: '1.4.13-SNAPSHOT' 
} 

task runApp(dependsOn: 'build', type: JavaExec) { 
    classpath = sourceSets.main.runtimeClasspath 
    main = "my.app.Application" 
} 

我有一个简单的模型来访问所有酷型号的方法:

public class User extends Model {} 

当我尝试构建项目时,问题就会出现:

 Execution failed for task ':instrumentModels'. 
     > org.javalite.instrumentation.InstrumentationException: java.lang.RuntimeException: my.app.model.User class is frozen 

      * Exception is: 
    ... 

      java.lang.RuntimeException: org.javalite.instrumentation.InstrumentationException: java.lang.RuntimeException:my.app.model.User class is frozen 
      at org.javalite.instrumentation.Instrumentation.instrument(Instrumentation.java:70) 
      at org.javalite.instrumentation.Instrumentation$instrument.call(Unknown Source) 
      at org.javalite.instrumentation.gradle.ActiveJDBCInstrumentation.instrument(ActiveJDBCInstrumentation.groovy:30) 
      at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75) 
      at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.doExecute(DefaultTaskClassInfoStore.java:136) 
      at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:129) 
      at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:118) 
      at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:623) 
      at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:606) 
      at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80) 
      at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61) 
      ... 68 more 
    Caused by: org.javalite.instrumentation.InstrumentationException: java.lang.RuntimeException: my.app.model.User class is frozen 
      at org.javalite.instrumentation.ModelInstrumentation.instrument(ModelInstrumentation.java:43) 
      at org.javalite.instrumentation.Instrumentation.instrument(Instrumentation.java:57) 
      ... 78 more 
    Caused by: java.lang.RuntimeException: my.app.model.User class is frozen 
      at javassist.CtClassType.checkModify(CtClassType.java:288) 
      at javassist.CtBehavior.setBody(CtBehavior.java:432) 
      at javassist.CtBehavior.setBody(CtBehavior.java:412) 
      at org.javalite.instrumentation.ModelInstrumentation.doInstrument(ModelInstrumentation.java:53) 
      at org.javalite.instrumentation.ModelInstrumentation.instrument(ModelInstrumentation.java:40) 
      ... 79 more 

回答

1

这是一个已知的bug,几天前在这里修复:https://github.com/javalite/activejdbc/issues/537 请在这里获取最新的1.4.13-SNAPSHOT:http://repo.javalite.io

更新:

基本上,这个异常是源于那个正在使用的仪器插件了Javassist的事实拒不仪器类,因为它是在当前VM已经仪表。对于非Gradle项目无关紧要,因为该流程在检测后退出,但Gradle进程保持不变。这个问题已经解决了,应该是有效的。

+0

你有没有试过我的建议? – ipolevoy

+0

我找不到activejdbc核心的Maven的最新版本......只有activejdbc-gradle-plugin没问题。 如何将该回购添加到我的gradle.build中? – Aleff

+0

奇怪!由于在Gradle插件中定义了依赖关系,因此该修补程序可能并未进入发行版。请从这里使用1.4.13-SNAPSHOT版本:http://repo.javalite.io/。请确保ActiveJDBC的libgrary,插件插件和Gradle插件都在同一个版本上。 – ipolevoy