[Mondrian] Update on retroweaver 2.0.7 upgrade
Julian Hyde
jhyde at pentaho.com
Tue Feb 3 15:44:18 EST 2009
> Eric wrote:
>
> I've been encountering a NoClassDefFoundError for java/lang/Enum in
> the mondrian.xmla.RowsetDefinition class initializer, despite
> the fact
> that the class appears to have been weaved correctly (it even looks
> right when the weaved class is decompiled). I don't see anything
> obvious I can point to as the culprit.
>
> I've submitted a report to the retroweaver devs, one of whom
> is taking
> a look at the class files to see if he can spot the problem. With
> luck, it'll be a simple environment error on my part, but there's no
> guarantee of it. For obvious reasons, I can't yet estimate how long
> this will take to resolve.
It has to be said: RowsetDefinition is a beast of a class. It is an enum
7000 lines long with about 20 members each of which has its own method
implementations and is therefore effectivly an inner class, and another 24
inner classes. I don't apologise for that - I think keeping it all in one
file helps to keep things uniform - but I can see how retroweaver might have
problems. Point out this fact to the Retroweaver developers if they have not
noticed!
One possible workaround is to convert RowsetDefinition into a regular class.
The enum constants would then be regular constants (public static final
RowsetDefinition) initialized to anonymous inner classes. We would lose the
ability to do 'switch (rowsetDefinition)' but I don't think that is used
widely.
But I can also wait a few weeks to see if the Retroweaver guys can fix this.
> Julian, I realize you have upcoming events that impose a time
> constraint on getting Mondrian 3.1 out the door. Much as I'd
> like to
> get this and the related concurrency fixes to Segment.java
> included in
> 3.1, I recognize that it may not be possible.
I'd like to get this in in the next month, but it's not crucial that it's in
3.1. We can consider a 3.1.1 release.
Julian
More information about the Mondrian
mailing list