Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] Weaving classes in rt.jar


On Oct 23, 2008, at 6:59 PM, Mario Mendez-Lojo wrote:

As far as I know, prepending the bootclasspath is the only solution to
this problem. You don't necessarily have to use the JDK sources, you
can do binary weaving.
I should have said that weaving the bytecode is not allowed either, since it again implies prepending a modified version of the whole rt.jar (around 50MB) to
 the boot classpath.

What I'm trying to do in my app is essentially modify the behavior of the JDK classes *without* having to tell the user "install my Java app...and, by the
way, download this 50MB file and replace your rt.jar with it"



Solving the problem at load time seems to be the only solution, but maybe I'm
missing something.



Hi,
In fact, you need to instrument the rt.jar statically, and even you will have one version per aspect... With our tool, the instrumentation of the full jdk takes around 2-3 minutes, so it's not a big issue, because this is done once. As David said, using prepending with the Xbootclasspath is the only solution. Application code is instrumented at loadtime.

The main problem for JDK instrumentation/weaving is that modification of core classes breaks the bootstrap and crashes the VM. Also there are some restrictions to the instrumentation, e.g. changing the hierarchy of classes in the aspect. Our framework uses bypasses to revert to the original code during bootstrap, and also bypasses instrumented code to avoid infinite recursions.

Cheers,

Alex




_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
https://dev.eclipse.org/mailman/listinfo/aspectj-users



Back to the top