It turns out that JspC.initServletContext() accesses System.out, but my application was setting System.out to NULL after it was done initializing everything. That's why the initial deploys worked, but one's that happened later via my homegrown autodeploy would fail.
The reason System.out is being set to NULL is Java Bug #6775145. A bunch of debug information was being dumped to stdOut by some Java classes on program exit. This caused our users to freak when they saw it, so we attempted to hide the output from them to avoid confusion. Our uses may be Phd's but....
I guess I will just hack around this problem until JDK 7 when that Java bug is claimed to be fixed in.
[Message sent by forum member 'hotngui']