This bug is very surprising. It sounds really serious, but I
haven't
seen it before, nor heard anyone complain. My test cases run
fine.
Maybe J2ME (mentioned in your e-mail) is different in some
respect.
In J2SE, the static <clinit> method is kept because it is
treated as
overriding <clinit> in java.lang.Object. Perhaps
java.lang.Object
doesn't have a <clinit> method in J2ME? A workaround would
then be
to explicitly specify the option
-keepclassmembers class * { static void <clinit>(); }
I'll look into it.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Logged In: YES
user_id=555208
This bug is very surprising. It sounds really serious, but I
haven't
seen it before, nor heard anyone complain. My test cases run
fine.
Maybe J2ME (mentioned in your e-mail) is different in some
respect.
In J2SE, the static <clinit> method is kept because it is
treated as
overriding <clinit> in java.lang.Object. Perhaps
java.lang.Object
doesn't have a <clinit> method in J2ME? A workaround would
then be
to explicitly specify the option
-keepclassmembers class * { static void <clinit>(); }
I'll look into it.
Logged In: YES
user_id=555208
The diagnosis above is correct. So for the time
being, you can specify
-keepclassmembers class * { static void <clinit>(); }
when processing J2ME applications.
I've fixed it for version 1.2, which is due for release
in a couple of days.
Eric.