2016-10-01 10 views
0

私はSpark Frameworkを使って少しプロジェクトを始めました。私はORMとしてActiveJDBCを選択しました。それはGradleを使ってすべてのものを構築しています。IntrumentModelsの仕事:モデルクラスはフリーズ

:私はすべてのクールなモデルのメソッドにアクセスするための単純なモデルをした

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

:ここ

は私build.gradleファイルです(UPDATED、ITはActiveJDBC 1.4.12を使用していた)

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

これで数日前、ここで修正された既知のバグ:https://github.com/javalite/activejdbc/issues/537 、ここでは最新の1.4.13-SNAPSHOTを取得してください:http://repo.javalite.ioを。

更新:

基本的には、この例外は、それがすでに現在のVMにインストルメントされたため、計装プラグインによって使用されているJavassistの楽器にクラスを拒否したという事実によるものでした。重要ではない非Gradleプロジェクトの場合、計測後にプロセスが終了するが、Gradleプロセスはそのままです。問題は修正されており、動作するはずです。

+0

あなたは私のアドバイスを試しましたか? – ipolevoy

+0

activejdbcコア用のmaven上の最新バージョンが見つかりません... activejdbc-gradle-pluginのみが問題ありません。 このレポをgradle.buildに追加するにはどうすればよいですか? – Aleff

+0

奇妙な! Gradleプラグインで依存関係がどのように定義されているため、この修正によりリリースに移行されなかった可能性があります。 http://repo.javalite.io/から1.4.13-SNAPSHOTバージョンを使用してください。 ActiveJDBC libgrary、Instrumentation Plugin、Gradle Pluginがすべて同じバージョンであることを確認してください。 – ipolevoy