Native Subversion Client Fails due to NoSuchMethodError
症状
When setting up a Native Subversion Client in Fisheye/Crucible 2.1+ or upgrading from a previous version, the following error appears:
2009-11-12 12:32:18,411 ERROR [IncrementalPinger2] fisheye.app RepositoryScanner-slurp - Problem processing revisions from repo file:///subversion/repos/repo-name/
due to class java.lang.NoSuchMethodError - org.tigris.subversion.javahl.ChangePath.getNodeKind()I
java.lang.NoSuchMethodError: org.tigris.subversion.javahl.ChangePath.getNodeKind()I
at com.cenqua.fisheye.svn.diff.DiffProcessor.examinePaths(DiffProcessor.java:465)
at com.cenqua.fisheye.svn.diff.DiffProcessor.processMessage(DiffProcessor.java:283)
at com.cenqua.fisheye.svn.SvnRepositoryScanner.slurpRevisionBlock(SvnRepositoryScanner.java:414)
at com.cenqua.fisheye.rep.RepositoryScanner.processRevisions(RepositoryScanner.java:393)
at com.cenqua.fisheye.rep.RepositoryScanner.slurpRepository(RepositoryScanner.java:268)
The Subversion repository is version 1.5 or earlier.
原因
Fisheye/Crucible 2.0+ requires Subversion 1.6+ (with the javahl libs 1.6+) in order for the native Subversion client to work.
ソリューション
Upgrade Subversion repository to 1.6+ and download the javahl 1.6+ libs to connect Fisheye/Crucible 2.1+ to the Native Subversion Client.
Alternative Resolution 1
Alternatively, continue to use the SVNKit client that comes bundled with Fisheye/Crucible 2.1+ i.e by removing the Subversion client jar and dynamic library definition from Administration >> Server Settings
so that Fisheye/Crucible uses the bundled SVNKit client.
Alternative Resolution 2
If Fisheye/Crucible fails to start up because of the above error (i.e. it's impossible to remove the native Subversion client settings in Administration
), remove the following line from FISHEYE_INST/config.xml
:
<svn-config jar="/path/to/jar" jnilib="path/to/dynamic lib"/>
Fisheye/Crucible will use the bundled SVNKit client upon next restart.
If the above setting is missing from FISHEYE_INST/config.xml
, but the Fisheye/Crucible server still fails to start up with the same error, ensure that the svn-javahl.jar
is not in classpath:
- It does not exist in
FISHEYE_INST/lib
orFISHEYE_HOME/lib
directory, from whence the jars are loaded into Fisheye - It is not included in FISHEYE_LIBRARY_PATH