Native Client Throws NoClassDefFoundError in Fisheye 2.x

Still need help?

The Atlassian Community is here for you.

Ask the community

Symptoms

Setting up the Native Client in Fisheye/Crucible 2.0+ throws the following error:


ERROR: problem running command
java.lang.reflect.InvocationTargetException
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at com.cenqua.fisheye.FishEyeCtl.mainImpl(FishEyeCtl.java:106)
	at com.cenqua.fisheye.FishEyeCtl.main(FishEyeCtl.java:39)
Caused by: java.lang.NoClassDefFoundError: org/tigris/subversion/javahl/LogMessageCallback
	at com.cenqua.fisheye.svn.SvnRepositoryEngine.<init>(SvnRepositoryEngine.java:38)
	at com.cenqua.fisheye.svn.SvnScmConfig.createRepositoryEngine(SvnScmConfig.java:123)
	at com.cenqua.fisheye.RepositoryConfig.createRepositoryEngine(RepositoryConfig.java:161)
	at com.cenqua.fisheye.rep.RepositoryHandle.run(RepositoryHandle.java:293)
	at com.cenqua.fisheye.config.RepositoryManager.runRepository(RepositoryManager.java:231)
	at com.cenqua.fisheye.config.RootConfig.startRepositories(RootConfig.java:462)
	at com.cenqua.fisheye.ctl.Run.mainImpl(Run.java:248)
	at com.cenqua.fisheye.ctl.Run.main(Run.java:46)
	... 6 more
Caused by: java.lang.ClassNotFoundException: org.tigris.subversion.javahl.LogMessageCallback
	at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
	... 14 more

Cause

Fisheye or Crucible 2.0+ requires SVN 1.5+ (with the javahl libs 1.5+) in order for the native client to work, and is incompatible with Subversion 1.4 or earlier.

Resolution

Upgrade your SVN repository to 1.5 or above and download the javahl 1.5x libs, to connect Fisheye/Crucible 2.x to the native client.

Alternatively you can use the SVNKit client that comes bundled with Fisheye/Crucible 2.x.

OR

If your server fails to start up because of the above error (and you cannot go into administration to remove the native client settings), edit your FISHEYE_INST/config.xml and remove the bit:


<svn-config jar="/path/to/jar" jnilib="path/to/dynamic lib"/>

Without the above, the next time you restart Crucible will use the bundled SVNKit.

If you do not have the above in your config.xml file, but your fisheye server still fails to load up with the error java.lang.NoClassDefFoundError: org/tigris/subversion/javahl/LogMessageCallback, check to ensure that the "svn-javahl.jar" is not being loaded (i.e. does not exist in your FISHEYE_INST/lib or FISHEYE_HOME/lib directory, where the jars are loaded into fisheye) and that it is not being included in the classpath (i.e. not included in the FISHEYE_LIBRARY_PATH Environment Variables ).

Last modified on Nov 21, 2012

Was this helpful?

Yes
No
Provide feedback about this article
Powered by Confluence and Scroll Viewport.