Native Client Throws NoClassDefFoundError in Fisheye 2.x

Platform Notice: Data Center Only - This article only applies to Atlassian products on the Data Center platform.

Note that this KB was created for the Data Center version of the product. Data Center KBs for non-Data-Center-specific features may also work for Server versions of the product, however they have not been tested. Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.

*Except Fisheye and Crucible

Symptoms

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

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 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:

1 2 <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 ).

Updated on April 7, 2025

Still need help?

The Atlassian Community is here for you.