Ok, worked it out. It’s a bit curly.
The breakage is due to this change in Groovy: http://jira.codehaus.org/browse/GROOVY-6066
Basically, static initializers are now (correctly) only run when the class is first used. In this case, it means that the thread context class loader is different to what it was. This points out the other problem, in that the WebJars code is using the thread context class loader to load services here: https://github.com/webjars/webjars-locator/blob/master/src/main/java/org/webjars/WebJarAssetLocator.java#L75
The solution is to explicitly set the context classloader, like…
Thread.currentThread().contextClassLoader = WebJarAssetLocator.class.getClassLoader()
In your load* method.