libgcj failure: Duplicate class registration

Hannes Wallnoefer hannes@helma.at
Thu Mar 18 17:20:00 GMT 2004


Tom Tromey wrote:
>>>>>>">" == hannes wallnoefer <hannes@helma.at> writes:
>>>>>>>>>>>>>>>I'm getting the following error message when adding a java class to a
>>>dynamically linked Apache module:
>>>libgcj failure: Duplicate class registration: GcjTest
>>>>>>>>With the current gcj, a given compiled class can only be loaded once
>by the system class loader. If you try to link in a class more than
>once, you get this failure.
>>This choice was the result of a lot of discussion a few years ago, see
>the list archives for the details. (I don't have a ready pointer to
>the thread, sorry.)
>>>>>>#19 0x401576ed in apr_dso_load () from /usr/lib/libapr-0.so.0
>>>#20 0x08066c5d in load_module ()
>>>>>>>>>Any idea what might be wrong?
>>>>>>>>Offhand it is hard to say. I've run into this problem by accidentally
>pulling in a second (different) copy of libgcj.so. I worked around
>it by setting the system property
>gnu.gcj.runtime.VMClassLoader.library_control to `never'.
>This disables the automatic loading of .so files.
>>>
I found that the problem is Apache is calling dlopen() twice for each 
shared module. This is done on purpose to let modules set up their logs 
files or whatever. So I guess the only solution is to put the Java 
classes in a separate library and load that manually from my module. 
Unless there is a way to "forget" about the classes loaded in the first 
dlopen() pass, but I somehow doubt this.
Hannes


More information about the Java mailing list

AltStyle によって変換されたページ (->オリジナル) /