Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in

It's not the same without you

Join the community to find out what other Atlassian users are discussing, debating and creating.

Atlassian Community Hero Image Collage

Fisheye libsvnhavahl-1.dll svnkit-javahl16-1.7.6.jar incompatibility? causes Could not load svn-javahl

I'm trying to configure the jira/fisheye integration. I'm using visualSVNServer and I'm having a hard time getting the right jar file I think.

I put the svnkit-javahl16-1.7.6.jar (located in C:\Java\svnkit-1.7.6\lib\svnkit-javahl16-1.7.6.jar and enter that in the configuration field for the JAR file)

and reference the dll (C:\fecru-2.8.2\libsvnjavahl-1.dll)

then restart the fisheye server via services.msc

I try to restart the repository and get:


Could not load svn-javahl: java.lang.NoClassDefFoundError-org/tmatesoft/svn/core/SVNException

Do I have an incompatible mix of jar and dll files?

Here's from the error log:

2012-11-01 10:21:31,249 WARN [WrapperStartStopAppMain ] fisheye.console com.cenqua.fisheye.svn.util.SvnLoader-onLoaded - Could not load svn-javahl
java.lang.NoClassDefFoundError: org/tmatesoft/svn/core/SVNException
at org.tigris.subversion.javahl.SVNClient.version(SVNClient.java:363)
at com.cenqua.fisheye.svn.util.SvnLoader.onLoaded(SvnLoader.java:48)
at com.cenqua.fisheye.svn.util.SvnLoader.checkLoaded(SvnLoader.java:27)
at com.cenqua.fisheye.svn.SvnScmConfig.<init>(SvnScmConfig.java:133)
at com.cenqua.fisheye.config.ConfigUtil.initScmConfig(ConfigUtil.java:77)
at com.cenqua.fisheye.config.ConfigUtil.createRepositoryConfig(ConfigUtil.java:62)
at com.cenqua.fisheye.config.DefaultRepositoryManager.createRepositoryConfig(DefaultRepositoryManager.java:252)
at com.cenqua.fisheye.config.DefaultRepositoryManager.reloadList(DefaultRepositoryManager.java:220)
at com.cenqua.fisheye.config.DefaultRepositoryManager.load(DefaultRepositoryManager.java:144)
at com.cenqua.fisheye.config.RootConfig.start(RootConfig.java:346)
at com.cenqua.fisheye.ctl.Run.mainImpl(Run.java:166)
at com.cenqua.fisheye.ctl.Run.main(Run.java:76)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.cenqua.fisheye.FishEyeCtl.mainImpl(FishEyeCtl.java:98)
at com.cenqua.fisheye.FishEyeCtl.main(FishEyeCtl.java:41)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.tanukisoftware.wrapper.WrapperStartStopApp.run(WrapperStartStopApp.java:159)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.ClassNotFoundException: org.tmatesoft.svn.core.SVNException
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 24 more
2012-11-01 10:21:31,296 ERROR [WrapperStartStopAppMain ] fisheye.app com.cenqua.fisheye.config.DefaultRepositoryManager-reloadList - Configuration Problem
com.cenqua.fisheye.config.ConfigException: Could not load svn-javahl: java.lang.NoClassDefFoundError-org/tmatesoft/svn/core/SVNException
at com.cenqua.fisheye.svn.util.SvnLoader.onLoaded(SvnLoader.java:56)
at com.cenqua.fisheye.svn.util.SvnLoader.checkLoaded(SvnLoader.java:27)
at com.cenqua.fisheye.svn.SvnScmConfig.<init>(SvnScmConfig.java:133)
at com.cenqua.fisheye.config.ConfigUtil.initScmConfig(ConfigUtil.java:77)
at com.cenqua.fisheye.config.ConfigUtil.createRepositoryConfig(ConfigUtil.java:62)
at com.cenqua.fisheye.config.DefaultRepositoryManager.createRepositoryConfig(DefaultRepositoryManager.java:252)
at com.cenqua.fisheye.config.DefaultRepositoryManager.reloadList(DefaultRepositoryManager.java:220)
at com.cenqua.fisheye.config.DefaultRepositoryManager.load(DefaultRepositoryManager.java:144)
at com.cenqua.fisheye.config.RootConfig.start(RootConfig.java:346)
at com.cenqua.fisheye.ctl.Run.mainImpl(Run.java:166)
at com.cenqua.fisheye.ctl.Run.main(Run.java:76)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at com.cenqua.fisheye.FishEyeCtl.mainImpl(FishEyeCtl.java:98)
at com.cenqua.fisheye.FishEyeCtl.main(FishEyeCtl.java:41)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.tanukisoftware.wrapper.WrapperStartStopApp.run(WrapperStartStopApp.java:159)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NoClassDefFoundError: org/tmatesoft/svn/core/SVNException
at org.tigris.subversion.javahl.SVNClient.version(SVNClient.java:363)
at com.cenqua.fisheye.svn.util.SvnLoader.onLoaded(SvnLoader.java:48)
... 22 more
Caused by: java.lang.ClassNotFoundException: org.tmatesoft.svn.core.SVNException
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
... 24 more

From the Wrapper.log:

INFO | jvm 1 | 2012/11/01 11:37:30 | INFO: Initiating Jersey application, version 'Jersey: 1.8-atlassian-6 03/12/2012 02:59 PM'
INFO | jvm 1 | 2012/11/01 11:38:02 | 2012-11-01 11:38:02,318 WARN - Could not load svn-javahl
INFO | jvm 1 | 2012/11/01 11:38:02 | java.lang.NoClassDefFoundError: org/tmatesoft/svn/core/SVNException
INFO | jvm 1 | 2012/11/01 11:38:02 | at org.tigris.subversion.javahl.SVNClient.version(SVNClient.java:363)
INFO | jvm 1 | 2012/11/01 11:38:02 | at com.cenqua.fisheye.svn.util.SvnLoader.onLoaded(SvnLoader.java:48)
INFO | jvm 1 | 2012/11/01 11:38:02 | at com.cenqua.fisheye.svn.util.SvnLoader.checkLoaded(SvnLoader.java:27)
INFO | jvm 1 | 2012/11/01 11:38:02 | at com.cenqua.fisheye.svn.SvnScmConfig.<init>(SvnScmConfig.java:133)
INFO | jvm 1 | 2012/11/01 11:38:02 | at com.cenqua.fisheye.config.ConfigUtil.initScmConfig(ConfigUtil.java:77)
INFO | jvm 1 | 2012/11/01 11:38:02 | at com.cenqua.fisheye.config.ConfigUtil.createRepositoryConfig(ConfigUtil.java:62)
INFO | jvm 1 | 2012/11/01 11:38:02 | at com.cenqua.fisheye.config.DefaultRepositoryManager.createRepositoryConfig(DefaultRepositoryManager.java:252)
INFO | jvm 1 | 2012/11/01 11:38:02 | at com.cenqua.fisheye.config.DefaultRepositoryManager.parseRepositoryConfig(DefaultRepositoryManager.java:246)
INFO | jvm 1 | 2012/11/01 11:38:02 | at com.cenqua.fisheye.config.DefaultRepositoryManager.runRepository(DefaultRepositoryManager.java:294)
INFO | jvm 1 | 2012/11/01 11:38:02 | at com.atlassian.fisheye.spi.admin.impl.DefaultRepositoryAdminService.start(DefaultRepositoryAdminService.java:1182)
INFO | jvm 1 | 2012/11/01 11:38:02 | at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
INFO | jvm 1 | 2012/11/01 11:38:02 | at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
INFO | jvm 1 | 2012/11/01 11:38:02 | at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
INFO | jvm 1 | 2012/11/01 11:38:02 | at java.lang.reflect.Method.invoke(Unknown Source)
INFO | jvm 1 | 2012/11/01 11:38:02 | at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:309)
INFO | jvm 1 | 2012/11/01 11:38:02 | at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
INFO | jvm 1 | 2012/11/01 11:38:02 | at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
INFO | jvm 1 | 2012/11/01 11:38:02 | at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:80)
INFO | jvm 1 | 2012/11/01 11:38:02 | at com.cenqua.crucible.hibernate.WithSessionAspect.doCloseSession(WithSessionAspect.java:37)
INFO | jvm 1 | 2012/11/01 11:38:02 | at sun.reflect.GeneratedMethodAccessor57.invoke(Unknown Source)
INFO | jvm 1 | 2012/11/01 11:38:02 | at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
INFO | jvm 1 | 2012/11/01 11:38:02 | at java.lang.reflect.Method.invoke(Unknown Source)

1 answer

1 accepted

0 votes
Answer accepted
Conor Atlassian Team Nov 01, 2012

JavaHL does not provide a way to select an implementation to use at runtime.

If you use the svnkit version of the javahl interface, it will be implemented with the pure-java svnkit classes from the remaining svnkit library jars. On the other hand, if you use a native javahl implementation bundled with your Subversion install, it will use the JNA based jar to interact with the native shared library.

You cannot mix and match these implementations. It's either all svnkit or all native. This is why you are getting

java.lang.NoClassDefFoundError: org/tmatesoft/svn/core/SVNException

The svnkit jar you have specified is trying to link to the remaining parts of the svnkit library (its underlying implementation)

FishEye handles this configuration issue by keeping the svnkit jars in a separate library directory. These jars are only adding to the FishEye classloader if you have not configured the native jar. Conversely, if you have configured the native jar, it is added to the classloader and the svnkit jars are not.

Unfortunately many Subversion distributions these days seem to include the libsvnjavahl-1.dll shared library but not the corresponding javahl jar (not a really useful configuration). For such distributions you will need to locate the javahl.jar and deploy that (This is not always possible).

It's one of the reasons we bundle svnkit with FishEye. It gives a simple 100% java solution.

That makes sense. I think the documentation could be clearer. Those of us who are finding our way along kind of on our own could use a recommendation from Atlassian like "If you are new to Fisheye try using the svnkit stuff first (and tell us where to locate them since they're bundled with the distribution). Or indicate in the tool tips the location where the "default" svnkit files are stored. Like "<fisheye_install>lib/svn/svnkit...jar, and ???/svnkit...dll Would save you a lot of calls I imagine and save your users a lot of time. I wouldn't have changed it if I could have found all the files.

That said I could be a moron and just missed the obvious somewhere along the way. Wouldn't be the first time.

Thank you for your prompt answer. I'm looking around for the dll as I write this.

Conor Atlassian Team Nov 01, 2012

If you are new to FishEye then, yes, you should start out with the bundled svnkit. There is no need to "locate" them. If you do not have a native implementation configured, FishEye knows where to find the svnkit jars and will add them automatically. Just remove anything you have entered so far and svnkit will be activated at restart.

https://confluence.atlassian.com/display/FISHEYE/Subversion+Client

and

https://confluence.atlassian.com/display/FISHEYE/Subversion+Client

has some info on all of this.

Conor Atlassian Team Nov 04, 2012

Suggest an answer

Log in or Sign up to answer
TAGS
Community showcase
Published in Confluence Cloud

🎨 Add some visual life to your templates

Hi Atlassian Community, My name is Avni Barman, and I am a Product Manager on the Confluence Cloud team. Based on feedback from you, we are giving admins more power to create templates that a...

224 views 4 9
Read article

Community Events

Connect with like-minded Atlassian users at free events near you!

Find an event

Connect with like-minded Atlassian users at free events near you!

Unfortunately there are no Community Events near you at the moment.

Host an event

You're one step closer to meeting fellow Atlassian users at your local event. Learn more about Community Events

Events near you