Cocoon is using Forehead to bootstrap its services. We found a weird problem related to JDK 1.3.1 which is probably a JDK bug that was fixed on 1.4.1.
This is related to the fact that the entry point class we call extends another class that exposes a main() method. It seems that Forehead calls the right method, but JDK 1.3.1 invoques the method of the super class instead of the one of the extending class.
I found out that if I modify the Forehead.run() method like the following:
public void run(String[] args) throws NoSuchMethodException, IllegalAccessException, InvocationTargetException { Class[] method_param_types = new Class[1]; method_param_types[0] = args.getClass();
Method main = this.entryClass.getDeclaredMethod("main",method_param_types);
Object[] method_params = new Object[1]; method_params[0] = args;
Thread.currentThread().setContextClassLoader( this.entryLoader );
main.invoke(null,method_params); }
the problem goes away.
I'm recompiling forehead with this patch to include in Cocoon, but I'd be happy to see this bug fixed in the main Forehead distribution.
Thanks.
-- Stefano Mazzocchi <[EMAIL PROTECTED]> Pluralitas non est ponenda sine necessitate [William of Ockham] --------------------------------------------------------------------