mx4j (Was: [fedora-java] tomcat5)

Anthony Green green at redhat.com
Wed Mar 9 21:01:37 UTC 2005


I looked at this a little further...

On Wed, 2005-03-09 at 07:25 -0800, Anthony Green wrote:
> Now tomcat5 gets a lot further, and we hit something new....
> 
> # cat /var/log/tomcat5/catalina.out
> Bootstrap: Class loader creation threw exception
> java.lang.NoClassDefFoundError: while resolving class: javax.management.MBeanServerFactory
>    at java.lang.VMClassLoader.transformException(java.lang.Class, java.lang.Throwable) (/usr/lib/libgcj.so.6.0.0)
>    at java.lang.VMClassLoader.resolveClass(java.lang.Class) (/usr/lib/libgcj.so.6.0.0)
>    at java.lang.Class.initializeClass() (/usr/lib/libgcj.so.6.0.0)
>    at org.apache.catalina.startup.Bootstrap.createClassLoader(java.lang.String, java.lang.ClassLoader) (Unknown Source)
>    at org.apache.catalina.startup.Bootstrap.initClassLoaders() (Unknown Source)
>    at org.apache.catalina.startup.Bootstrap.init() (Unknown Source)
>    at org.apache.catalina.startup.Bootstrap.main(java.lang.String[]) (Unknown Source)
>    at gnu.java.lang.MainThread.call_main() (/usr/lib/libgcj.so.6.0.0)
>    at gnu.java.lang.MainThread.run() (/usr/lib/libgcj.so.6.0.0)
> Caused by: java.lang.ClassNotFoundException: mx4j.log.Logger not found in gnu.gcj.runtime.SystemClassLoader{urls=[], parent=gnu.gcj.runtime.VMClassLoader{urls=[file:/usr/share/java/ext/com-sun-tools-doclets-Taglet-0.7.1.jar], parent=null}}
>    at java.net.URLClassLoader.findClass(java.lang.String) (/usr/lib/libgcj.so.6.0.0)
>    at java.lang.ClassLoader.loadClass(java.lang.String, boolean) (/usr/lib/libgcj.so.6.0.0)
>    at java.lang.Class.forName(java.lang.String, boolean, java.lang.ClassLoader) (/usr/lib/libgcj.so.6.0.0)
>    ...8 more

The tomcat5 startup script uses JPackage's rebuild-jar-repository script
to construct a directory of jar files for the server to use.  One of
these is [jmxri].jar.  So it symlinks to /usr/share/java/jmxri.jar,
which is itself a symlink since jmx appears to be managed by
alternatives.  We eventually get to /usr/share/java/mx4j/mx4j-jmx.jar.
Unfortunately, this jar has external dependencies on other jar files
in /usr/share/java/mx4j.  How is rebuild-jar-repository or tomcat5
supposed to know this?  We end up with an incomplete jar repository,
which is causing this problem.   Is there a good and simple solution to
this problem?

AG





More information about the fedora-devel-java-list mailing list