WARNING: Class Joiner loaded from appengine.jar has a dependency which is not part of App Engine's supported API

‹ bootstrap class path not set in conjunction with -source 1.6 | Tribal Leadership (Dave Logan, John King, Halee Fischer-Wright) ›

Using optimizeWar = true in gradle-gae-plugin will cause it to run fatJarPrepareFiles and fatJar which expand all of your dependency .jar files into .class files and then re-combine them all into a single appengine.jar file. Depending on what you have in your dependencies block, this can sometimes cause:

WARNING: Class com.google.appengine.repackaged.com.google.common.base.Joiner loaded from file:.../build/exploded-war/WEB-INF/lib/appengine.jar has a dependency on class com.google.appengine.repackaged.com.google.common.base.Joiner$1 loaded from (file:.../build/exploded-war/WEB-INF/lib/appengine.jar ), which is not part of App Engine's supported API.

To fix this, you can just remove this line from the gae closure in your build.gradle file:

optimizeWar = true

Comments

Hi Wesley!

By default optimizeWar value is set to 'False' hence you lose a nice way to speed up instance warmup request. As a simple workaround please consider the following build configuration:

compile ("com.google.appengine:appengine-api-1.0-sdk:$gaeVersion") {

      ext {

            fatJarExclude = true

      }

  }

  compile ("com.google.appengine:appengine-api-labs:$gaeVersion") {

      ext {

            fatJarExclude = true

      }  

  }

' fatJarExclude = true' makes a signal to fatjar plugin to omit this compile unit while slimWar task execution. Nevertheless omitted jars are put to WEB-INF/lib/ separately

Hope it helps.

Subscribe to All Posts - Wesley Tanaka