IIRC, tcl uses sigchld to watch for exec exit. this interrupt is also used by some (all?) jvms. (I was using Sun's on linux x86.)
When I did my update to nsjava 0.0.10 I added an exec replacement based on jacl's. (Modified to return a String and otherwise simplified. Worked for me.)
You might also want to have a look at the arg parser I rewrote -- the code is much simpler and allows arbitrary JVM options to be passed in. IMO this is more flexible than hardcoding e.g. how "classpath" is specified, which is a good example because it changed from 1.1 to 1.2.