Усилитель Datanucleus перестает работать после обновления Google App Engine до Java 8

Мы получили электронное письмо от Google App Engine для обновления до Java 8 с Java 7. Мы выполнили следующие шаги:

https://cloud.google.com/appengine/docs/standard/java/migrating-to-java8

Но после развертывания серверной части App Engine он не запускается из-за следующей ошибки:

org.datanucleus.metadata.MetaDataManager initialiseFileMetaDataForUse: найдены метаданные для класса ... но этот класс не улучшен !! Пожалуйста, улучшите класс перед запуском DataNucleus. (MetaDataManager.java:1144) org.datanucleus.exceptions.NucleusUserException: найдены метаданные для класса ... но этот класс не улучшен !! Пожалуйста, улучшите класс перед запуском DataNucleus. на org.datanucleus.metadata.MetaDataManager.initialiseClassMetaData (MetaDataManager.java:2593) в org.datanucleus.metadata.MetaDataManager.initialiseFileMetaData (MetaDataManager.java:2544) в org.datanucleus.metadata.MetaDataManager.initialiseFileMetaDataForUse (MetaDataManager.java:1140 ) в org.datanucleus.metadata.MetaDataManager.loadPersistenceUnit (MetaDataManager.java:986) в org.datanucleus.api.jpa.JPAEntityManagerFactory.initialiseNucleusContext (JPAEntityManagerFactory.initialiseNucleusContext (JPAEntityManagerFactory. JPAEntityManagerFactory.java:417) по адресу org.datanucleus.api.jpa.JPAEntityManagerFactory. (JPAEntityManagerFactory.java:380) по адресу org.datanucleus.api.jpa.PersistenceProviderImistence.avistory.jpg. createEntityManagerFactory (Persistence.java:150) в javax.persistence.Persistence.createEntityManagerFactory (Persistence.java:70)

Это наш build.gradle:

buildscript {    // Configuration for building
    repositories {
        mavenCentral()
        jcenter()    // Bintray's repository - a fast Maven Central mirror & more
    }
    dependencies {
        // App Engine Gradle plugin
        classpath 'com.google.cloud.tools:appengine-gradle-plugin:+'
    }
}

repositories {
    mavenCentral()
    jcenter()
}

apply plugin: 'java'
apply plugin: 'war'
//apply plugin: 'appengine'

apply plugin: 'com.google.cloud.tools.appengine'  // App Engine tasks
apply plugin: 'com.google.cloud.tools.endpoints-framework-server'

sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8

appengine {  // App Engine tasks configuration
    deploy {   // deploy configuration
        version = findProperty("appengine.deploy.version")

        def promoteProp = findProperty("appengine.deploy.promote")
        if (promoteProp != null) {
            promote = new Boolean(promoteProp)
        }
    }
}

configurations {
    compile.exclude module: 'guava-jdk5'
}

dependencies {
    implementation 'jstl:jstl:1.2'

    implementation group: 'com.google.appengine', name: 'appengine-api-1.0-sdk', version: '+'
    implementation group: 'com.google.endpoints', name: 'endpoints-framework', version: '+'

    implementation 'com.google.appengine.orm:datanucleus-appengine:+' //2.1.2'

    implementation 'javax.servlet:servlet-api:2.5'
    implementation 'javax.inject:javax.inject:1'
    implementation 'javax.transaction:jta:1.1'
    implementation 'com.ganyo:gcm-server:1.0.2'
    implementation 'org.json:json:20140107'
    implementation 'org.apache.httpcomponents:httpmime:+'
    implementation 'org.apache.geronimo.specs:geronimo-jpa_2.0_spec:1.0'

    // Persistence
    //    implementation 'org.ow2.asm:asm:4.0'
    implementation 'javax.jdo:jdo-api:+' //3.0.1'
    implementation 'org.datanucleus:datanucleus-api-jpa:3.1.3'
    implementation 'org.datanucleus:datanucleus-api-jdo:3.1.3' //5.0.1'
    implementation 'org.datanucleus:datanucleus-enhancer:+' //3.1.1'
    implementation 'org.datanucleus:datanucleus-core:3.1.3'

    implementation 'org.hibernate:hibernate-validator:5.2.4.Final'

    implementation 'com.google.api-client:google-api-client:+'
    implementation 'com.google.api-client:google-api-client-android:+'
    implementation 'com.google.http-client:google-http-client:+'
    implementation 'com.google.http-client:google-http-client-android:+'
}

task datanucleusEnhance {
    description "Enhance JPA model classes using DataNucleus Enhancer"
    dependsOn compileJava

    doLast {
        // define the entity classes
        def entityFiles = fileTree(sourceSets.main.output.classesDir).matching {
            include '/*.class'
        }

        println "Enhancing with DataNucleus the following files"
        entityFiles.getFiles().each {
            println it
        }

        // define Ant task for DataNucleus Enhancer
        ant.taskdef(
                name : 'datanucleusenhancer',
                classpath : sourceSets.main.runtimeClasspath.asPath,
//                classname : 'org.datanucleus.enhancer.EnhancerTask'
                // the below is for DataNucleus Enhancer 3.1.1
                classname : 'org.datanucleus.enhancer.tools.EnhancerTask'
        )

        // run the DataNucleus Enhancer as an Ant task
        ant.datanucleusenhancer(
                classpath: sourceSets.main.runtimeClasspath.asPath,
                verbose: true,
                api: "JDO") {
            entityFiles.addToAntBuilder(ant, 'fileset', FileCollection.AntType.FileSet)
        }
    }
}

classes.dependsOn(datanucleusEnhance)

Это сработает, как только мы вернемся на Java 7.


person doctorram    schedule 29.04.2018    source источник
comment
ваша ошибка ничего не говорит о том, что улучшение не работает. Разместите вывод от энхансера. И используйте декомпилятор java для своих классов, чтобы увидеть, работает ли улучшение.   -  person    schedule 29.04.2018
comment
Где мне найти журналы усилителя? Разве это не в консоли разработчика GAE?   -  person doctorram    schedule 29.04.2018
comment
куда бы вы ни настроили ведение журнала, когда вы его запускаете   -  person    schedule 29.04.2018
comment
Не знаю, где настроить расположение логов энхансера ...   -  person doctorram    schedule 30.04.2018
comment
Почему бы не заглянуть в документацию по усилителю и не взглянуть на спецификацию файла конфигурации Log4J?   -  person    schedule 30.04.2018
comment
Удалось ли вам это решить? Это выглядит точно так же, как и ваша проблема.   -  person A.Queue    schedule 19.05.2018
comment
Не совсем. Вместо этого я сделал хак. Я обновился до Java 8, но включил совместимость с Java 7!   -  person doctorram    schedule 19.05.2018
comment
Тогда вы можете опубликовать это как решение здесь! Можете также заработать себе несколько очков.   -  person A.Queue    schedule 20.05.2018