Instantly share code, notes, and snippets.

Embed
What would you like to do?
GRAILS - Don't use this packages!

This is not Grails fault, but Spring-Loaded's.

They make the assumption that you won't put any of your own code under a package called in certain ways, and caches classes under that packages, which are meant to be used only by the framework. The most significant ones for us are grails.* and groovy.*. As a result, if you do use that packages, you will get something like this when trying to reload those classes:

2014-09-26 04:21:20,945 [FileSystemWatcher: files=#100 cl=java.net.URLClassLoader@
19d86dfc] ERROR plugins.AbstractGrailsPluginManager  - Plugin [services:2.4.2] could not reload changes to file [/<path to ggts workspace>/ggts-workspace/grails-slow3/grails-app/services/slow/SomeClassService.groovy]: Cannot get property 'cacheOperationSource' on null object
Message: Cannot get property 'cacheOperationSource' on null object
   Line | Method
->> 184 | doCall in CacheGrailsPlugin$_closure4
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
^   745 | run    in java.lang.Thread

Here is the source code that explains it:

https://github.com/spring-projects/spring-loaded/blob/master/springloaded/src/main/java/org/springsource/loaded/TypeRegistry.java#L78

The solution:

Always namespace your packages with your apps' or company's name. Avoid getting your classes confused with the framework classes.

@mr-simonski

This comment has been minimized.

Show comment
Hide comment
@mr-simonski

mr-simonski Jan 7, 2015

Thanks for this hint! I'm experiencing this error message with Grails 2.4.4 ànd Intellij IDEA 14.0.2 even without having any strings containing grails.* or groovy.* in my package names. But the controllers and services I build import packages with those names in it like

import grails.converters.JSON

Is this causing the error? What to do about that?

mr-simonski commented Jan 7, 2015

Thanks for this hint! I'm experiencing this error message with Grails 2.4.4 ànd Intellij IDEA 14.0.2 even without having any strings containing grails.* or groovy.* in my package names. But the controllers and services I build import packages with those names in it like

import grails.converters.JSON

Is this causing the error? What to do about that?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment