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 ).
Was this helpful?