java - SVNKit java.lang.IndexOutOfBoundsException

标签 java svn svnkit

我正在使用 svnkit(独立版 1.8.12)通过 java checkout svn 存储库。 我尝试了几种可能性( 12 )。不幸的是,一旦 SVNkit 开始连接到 SVN 服务器,它就会崩溃并显示以下堆栈跟踪( checkout 、测试连接、获取修订号等)。通过终端结账效果很好(使用安装了 subversion 的 Ubuntu 14),用浏览器打开使用的 repo-url 效果也很好。

Exception in thread "main" java.lang.IndexOutOfBoundsException: Bounds exceeds available space : size=7, offset=8
at com.sun.jna.Memory.boundsCheck(Memory.java:185)
at com.sun.jna.Memory.getPointer(Memory.java:509)
at org.tmatesoft.svn.core.internal.util.jna.SVNGnomeKeyring.setPassword(SVNGnomeKeyring.java:334)
at org.tmatesoft.svn.core.internal.util.jna.SVNGnomeKeyring.setPassword(SVNGnomeKeyring.java:308)
at org.tmatesoft.svn.core.internal.util.jna.SVNJNAUtil.addPasswordToGnomeKeyring(SVNJNAUtil.java:170)
at org.tmatesoft.svn.core.internal.wc.DefaultSVNPersistentAuthenticationProvider$GnomeKeyringPasswordStorage.savePassword(DefaultSVNPersistentAuthenticationProvider.java:696)
at org.tmatesoft.svn.core.internal.wc.DefaultSVNPersistentAuthenticationProvider.savePasswordCredential(DefaultSVNPersistentAuthenticationProvider.java:416)
at org.tmatesoft.svn.core.internal.wc.DefaultSVNPersistentAuthenticationProvider.saveAuthentication(DefaultSVNPersistentAuthenticationProvider.java:323)
at org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.acknowledgeAuthentication(DefaultSVNAuthenticationManager.java:274)
at org.tmatesoft.svn.core.auth.BasicAuthenticationManager.acknowledgeAuthentication(BasicAuthenticationManager.java:105)
at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:771)
at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:398)
at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:386)
at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(DAVConnection.java:863)
at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:699)
at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:118)
at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:1049)
at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.testConnection(DAVRepository.java:100)
at Main.svnCheckout(Main.java:131)
at Main.svnCheckoutPrep(Main.java:106)
at Main.main(Main.java:76)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144)

产生此错误的代码如下

    static void svnCheckout(String url, String dest) throws SVNException {
    /* Setup SVNKIT library */
    setupSVNKit();

    SVNRepository repository = null;
    try {
        repository = SVNRepositoryFactory.create(SVNURL.parseURIEncoded(url));
    } catch (SVNException svne) {
        System.err.println("error while creating an SVNRepository for the location '"
                        + url + "': " + svne.getMessage());
        System.exit(1);
    }
    ISVNAuthenticationManager authManager = SVNWCUtil.createDefaultAuthenticationManager("someName", "somePWD");
    repository.setAuthenticationManager(authManager);
    repository.testConnection();
    }

...

    static void setupSVNKit(){
    /* For using http:// and https:// */
    DAVRepositoryFactory.setup();
    }

有人知道我做错了什么吗? 如果只有 testConnection() 函数能够工作,我会很高兴。 既然是https,我是否需要设置SVNkit来接受指纹或类似的东西?

非常感谢任何帮助! 马库斯

最佳答案

好吧,经过多次尝试和错误,我明白了。实际上,我使用另一个存储库遇到了不同的错误。我做了两件事(不确定哪一件是真正的原因,也许两者都是)。

  1. 将不受信任的证书(是的,它没有经过验证)添加到 JVM
  2. 在虚拟机选项中添加了以下行:-Dsvnkit.library.gnome-keyring.enabled=false

进一步阅读:

第 1 点:https://issues.tmatesoft.com/issueMobile/SVNOLD-290

第2点:https://issues.tmatesoft.com/issue/SVNKIT-231

关于java - SVNKit java.lang.IndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35473399/

相关文章:

如果我们不使用 hashmap 或 hashset,则不需要 Java hashCode() 方法覆盖

php - 仅对修改后的行使用 PHP_CodeSniffer

eclipse - 安装SVN Kit连接器代理身份验证错误

eclipse - Subclipse:更新后 SVN 出错(无法创建 SVN 首选项页面)

java - 比较 Java 中的两种泛型类型?

Java - 非静态枚举

java.lang.IllegalStateException 您需要在此 Activity 中使用 Theme.AppCompat 主题(或后代)

SVN:如何导入文件夹保留文件夹名称?

database - 如何使用 RedGate、TeamCity 和 SVN 自动升级数据库

java - Eclipse(或任何工具),将所有作者从 svn 添加到 java 文件