Search code examples
javagradlenetflix

Error while building netflix nicobar using gradle


I checked out Nicobar and trying to build it with gradle version 3.4 and it failed. Also tried building it in STS which seem to be using gradle version 2.2 but again got into error.

with gradle 2.2: java.lang.NoClassDefFoundError: org/gradle/api/internal/project/AbstractProject
    at nebula.plugin.netflixossproject.NetflixOssProjectPlugin.apply(NetflixOssProjectPlugin.groovy:47)
    at nebula.plugin.netflixossproject.NetflixOssProjectPlugin.apply(NetflixOssProjectPlugin.groovy)
    at org.gradle.api.internal.plugins.ImperativeOnlyPluginApplicator.applyImperative(ImperativeOnlyPluginApplicator.java:35)


with gradle 3.4: org.gradle.api.plugins.InvalidPluginException: An exception occurred applying plugin request [id: 'nebula.netflixoss', version: '2.2.5']
    at org.gradle.plugin.use.internal.DefaultPluginRequestApplicator.applyPlugin(DefaultPluginRequestApplicator.java:168)
    at org.gradle.plugin.use.internal.DefaultPluginRequestApplicator.applyPlugins(DefaultPluginRequestApplicator.java:124)
    at org.gradle.configuration.DefaultScriptPluginFactory$ScriptPluginImpl.apply(DefaultScriptPluginFactory.java:131)
    at org.gradle.configuration.project.BuildScriptProcessor.execute(BuildScriptProcessor.java:39)

Solution

  • Netflix Nicobar is shipped with gradle wrapper which is configured already to build the project with appropriate gradle version. Instead of using installed gradle try to use the wrapper - it points to 2.2.1 version. I've just checked out and built the project, it all works well.

    With gradle 3.4.1 it fails with the same exception:

    java.lang.NoClassDefFoundError: org/gradle/api/internal/project/AbstractProject at nebula.plugin.netflixossproject.NetflixOssProjectPlugin.apply(NetflixOssProjectPlugin.groovy:47) at nebula.plugin.netflixossproject.NetflixOssProjectPlugin.apply(NetflixOssProjectPlugin.groovy)

    It means that Nicobar uses an older version of NetflixOssProjectPlugin.groovy which was depending on org.gradle.api.internal.project.AbstractProject - which is now eliminated from dependencies as you can see here. Use gradle wrapper.