Gradle 5.6 - RuntimeException: Unable to load FastStringService

Project build fails after switching to gradle 5.6 (at the same time, if I downgrade to 5.4.1 - projects builds without any problem). How to fix? What happens to JsonSlurper that it starts to crash?

Caused by: java.lang.RuntimeException: Unable to load FastStringService
        at org.apache.groovy.json.internal.FastStringUtils.getService(FastStringUtils.java:57)
        at org.apache.groovy.json.internal.FastStringUtils.toCharArray(FastStringUtils.java:67)
        at org.apache.groovy.json.internal.BaseJsonParser.parse(BaseJsonParser.java:112)
        at commons_b0n886tf4bx64z7ahcmoiww74.trimAndCopyJsonFile(/Users/projects/app/clients/android/commons.gradle:113)
        at org.gradle.internal.metaobject.BeanDynamicObject$GroovyObjectAdapter.invokeOpaqueMethod(BeanDynamicObject.java:579)
        at org.gradle.internal.metaobject.BeanDynamicObject$MetaClassAdapter.invokeMethod(BeanDynamicObject.java:506)
        at org.gradle.internal.metaobject.BeanDynamicObject.tryInvokeMethod(BeanDynamicObject.java:191)
        at org.gradle.internal.extensibility.MixInClosurePropertiesAsMethodsDynamicObject.tryInvokeMethod(MixInClosurePropertiesAsMethodsDynamicObject.java:45)
        at org.gradle.groovy.scripts.BasicScript$ScriptDynamicObject.tryInvokeMethod(BasicScript.java:134)
        at org.gradle.internal.metaobject.AbstractDynamicObject.invokeMethod(AbstractDynamicObject.java:162)
        at org.gradle.groovy.scripts.BasicScript.invokeMethod(BasicScript.java:83)
        at settings_7vv0xqhxk1jz7tv3zesay4nvr.run(/Users/projects/app/clients/android/settings.gradle:60)
        at org.gradle.groovy.scripts.internal.DefaultScriptRunnerFactory$ScriptRunnerImpl.run(DefaultScriptRunnerFactory.java:91)
        ... 124 more

code that fails in commons.gradle:

/** make a copy of package.json file and trim it content from un-relative information. */
static File trimAndCopyJsonFile(source, destination) {
    final jsonText = source.text
    def slurper = new groovy.json.JsonSlurper()
    def packageJson = slurper.parseText(jsonText)
    def builder = new groovy.json.JsonBuilder()

    // title, name, version, description, license, repository.baseUrl, licenseFilename
    // author.username, author.name
    def root = builder {
        title packageJson.title
        name packageJson.name
        version packageJson.version
        description packageJson.description
        license packageJson.license
        licenseFilename packageJson.licenseFilename
        repository {
            baseUrl packageJson.repository.baseUrl
        }
        author {
            name packageJson.author.name
            username packageJson.author.username
        }
    }

    destination.createNewFile()
    destination.write(builder.toPrettyString())
}

commons.gradle is used from settings.gradle file:

/* Configuration helper methods */
apply from: 'commons.gradle'

Thanks Oleksandr for reporting. We’ll fix this in 5.6.1: https://github.com/gradle/gradle/pull/10349

1 Like

Hi @OlKu,

Could you give Gradle 5.6.1-20190827133055+0000 a try? This is a nightly build that will become 5.6.1.

You can update your Gradle build with gradlew wrapper --gradle-version=5.6.1-20190827133055+0000.

Thanks!