Cannot find javahl, svnkit nor command line svn cl

2019-01-23 05:46发布

问题:

I've done numerous svn / ant set-ups and but this time cann't figure out what's wrong.

Using Linux,

svn 1.6.6
ant 1.8.2
svnant 1.3.1

I've copied the svnant jar files into $ANT_HOME/lib

top@secret:~/apps/apache-ant-1.8.2/lib$ ls -l
-rw-r--r-- 1 root root  244831 2011-06-23 07:55 ganymed.jar
-rw-r--r-- 1 root root  948100 2011-06-23 07:55 jna.jar
-rw-r--r-- 1 root root   76383 2011-06-23 07:55 svnant.jar
-rw-r--r-- 1 root root  215757 2011-06-23 07:55 svnClientAdapter.jar
-rw-r--r-- 1 root root   89412 2011-06-23 07:55 svnjavahl.jar

etc...

My build file specifies:

<taskdef name="svn" classname="org.tigris.subversion.svnant.SvnTask"   />

But whenever I execute

   <target name="update">
                <svn>
                        <update dir="."/>
                </svn>
        </target>

I get the dreaded:

update:
      [svn] Missing 'javahl' dependencies on the classpath !

BUILD FAILED
/home/top/apps/utils/build.xml:26: Cannot find javahl, svnkit nor command line svn client

Any ideas what I'm doing wrong?

I assumed copying the svnant jars into $ANT_HOME/lib should be enough?

回答1:

Javahl way always needs some kind of os-dependent driver. This is mostly hard to set-up and I don't recommend using it.

You should try using svnkit:

<svn svnkit="true">

This uses the pure java library, but needs svnkit.jar to be in the classpath.

References:

  1. http://subclipse.tigris.org/svnant/svn.html
  2. http://subclipse.tigris.org/wiki/JavaHL

I only use the fallback/commandline version, where the svn executable is in the PATH. This works in most cases without problems with the following settings:

<svn svnkit="false" javahl="false">

Note: These settings are for svnant 1.31 and prior. Since version 1.32 you can use <svnSetting />, which is described in the other answer



回答2:

As of svnant 1.3.2 the attributes svnkit and javahl have been deprecated. The alternative is to use the svnSetting task.

Put this task in your build file somewhere:

<svnSetting
    svnkit="false"
    javahl="false"
    id="svn.settings"/>

Then when you are calling the svn task use it this way (take note of the refid attribute):

<target name="doingSomethingAwesome">
    <svn refid="svn.settings">
        <!-- do something -->
    </svn>
</target>

Hope this helps, did me.

REFERENCE



回答3:

If you are getting "Cannot find javahl, svnkit nor command line svn client" then you have to make ensure that svn path have been set or not : for exa : path=c:\svn\bin;



标签: svn ant