【问题标题】:SVNAnt - propget task throwing NoSuchMethodError using SVNKitSVNAnt - 使用 SVNKit 抛出 NoSuchMethodError 的 propget 任务
【发布时间】:2014-01-08 10:11:02
【问题描述】:

我正在尝试使用 svnant 的 propget 任务查询 SVN 属性值,但遇到了问题。

我写了一个简单的 Ant 目标来更新构建文件的文件夹,然后查询一个属性:

<project name="svntest" default="test">

<typedef resource="org/tigris/subversion/svnant/svnantlib.xml" />

<svnSetting javahl="false" svnkit="true" username="xxx" password="yyy" id="svn.settings" />

<target name="test">
    <svn refid="svn.settings">
        <update dir="." />
        <propget path="file.xml" name="svn:keywords" property="prop.value" />
    </svn>
    <echo message="${prop.value}" />
</target>

</project>

我的 SVN 存储库是 1.7.5,我有 svnkit 1.7,应该兼容。

如果我注释掉 propget 和 echo 行,它会更新文件夹。 但是当我尝试查询特定文件的 svn:keywords 属性时,我得到了这个错误:

C:\somepath\test.xml:11: java.lang.NoSuchMethodError: org.tigris.subversion.javahl.PropertyData.(Lorg/tigris/subversion/javahl/SVNClientInterface;Ljava/lang/String; Ljava/lang/String;Ljava/lang/String;[B)V

我已将 file.xml 的 svn:keywords 属性设置为“值”,所以它确实存在,并提交了。

如果我更改 propget 名称参数以查找不存在的 SVN 属性(例如“testprop”),它不会失败,它只会返回“${prop.value}”,我假设是因为 prop .value 属性未设置。 如果我实际上将自定义“testprop”SVN 属性添加到 file.xml,我会再次收到上述错误 - 所以它似乎只在它找到一个属性并尝试获取它的值时发生。

我之前在尝试使用 javahl 时遇到过问题,因此将其设置为 false 并改用 svnkit。但是,由于更新任务有效,我不会认为 javahl/svnkit 绑定是问题。

任何帮助表示赞赏,谢谢。

【问题讨论】:

    标签: svn ant svnant


    【解决方案1】:

    SVNKit 的 JavaHL 绑定在一个名为 svnkit-javahl16-*VERSION*.jar 的文件中。这个文件可以在从SVNKit网站下载的standalone.ziplib目录下找到。

    此 Jar 文件需要位于 Ant 类路径中。

    编辑 - 2014 年 1 月 10 日的后续行动:

    “缺失”的方法肯定在svnkit-javahl16-1.7.11.jar:

    > javap -s -classpath svnkit-javahl16-1.7.11.jar org.tigris.subversion.javahl.PropertyData
    ...
    org.tigris.subversion.javahl.PropertyData(org.tigris.subversion.javahl.SVNClientInterface, java.lang.String, java.lang.String, java.lang.String, byte[]);
        Signature: (Lorg/tigris/subversion/javahl/SVNClientInterface;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[B)V
    ...
    

    不知何故,在 Ant 的类路径中找不到此构造函数。

    在命令提示符中运行以下命令:

    > set ANT_OPTS=-verbose:class
    > ant <= your Ant command line here
    

    将产生大量输出。在此将埋有如下一行:

    [Loaded org.tigris.subversion.javahl.PropertyData from file:/...]
    

    让我们知道您系统上的file:/... 是什么。如果不完全匹配,则查看是否有任何对名称中带有“javahl”的加载类的引用。

    【讨论】:

    • 嗨,Chad,这个 jar 已经在我的 Ant 类路径中 - 我之前添加了它以及 SVNKit 独立 zip 库中的所有其他 jar(总共大约 16 个)。仅供参考,您指出的 VERSION 是 1.7.11。
    • 感谢您的提示,但我已经弄清楚了。我通过 Eclipse 使用 Ant,在我的 Ant 设置中,我将 svnkit-javahl16-1.7.11.jar 添加到 Ant Home Entries 中,还添加了另一个“svnjavahl”jar。删除了这个,现在可以正常工作了。
    猜你喜欢
    • 1970-01-01
    • 2021-06-08
    • 1970-01-01
    • 2020-02-09
    • 2017-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-30
    相关资源
    最近更新 更多