The second time this happened to me I tried harder to find the solution, and it appears to be a classpath problem!? I saw that some of the jasper jars were duplicated (in different directories) in the classpath. In my case, one set was in an iReport directory and another was in a JasperReport directory. When I examined the REPORT_SCRIPLETs variable in a watch window, it had multiple copies of my scriptlet. Somehow the internal mechanism to find scriptlets doesn't look at only the package/classname of the scriptlet but of jar calling it, or some other weirdness. In other words, there must be a full classpath search for anything capable of loading the scriptlet instead of stopping at the first match as you would expect from a classpath search. After deleting the duplicates from the classpath, all worked well.