用svnkit连接svn出错了
在测试时找了几个svn服务器做测试都没有问题,可是到客户那里就是连接不上,还报错、。。。
/**
* 初始化操作
*
* @throws Exception
*/
public void initialize() throws Exception {
FSRepositoryFactory.setup();
DAVRepositoryFactory.setup();
SVNRepositoryFactoryImpl.setup();
repository = SVNRepositoryFactory.create(SVNURL.parseURIEncoded(this.url));
ISVNAuthenticationManager authManager = SVNWCUtil.createDefaultAuthenticationManager(this.username,this.password);
repository.setAuthenticationManager(authManager);
}
/**
* 测试svn连接是否成功
*
* @throws Exception
*/
public String testConnect(String url, String username, String password) {
setUrl(url);
setUsername(username);
setPassword(password);
int i = url.indexOf("//");
// 相对仓库根目录的路径
setPath(url.substring(i + 2).substring(
url.substring(i + 2).indexOf("/")));
try {
initialize();
Collection<SVNDirEntry> entries;
entries = repository.getDir("/", -1, null, (Collection) null);
System.out.println(repository.getRepositoryRoot(true).toDecodedString());
return repository.getRepositoryRoot(true).toDecodedString();
} catch (Exception e) {
e.printStackTrace();
System.out.println("false");
return "false";
}
}
报错code:
org.tmatesoft.svn.core.SVNAuthenticationException: svn: Authentication required
for '<http://XXX.xx.xx.xx:80> Please input your domain username and password'
at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.authenticationFail
ed(SVNErrorManager.java:46)
at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.authenticationFail
ed(SVNErrorManager.java:40)
at org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.ge
tNextAuthentication(DefaultSVNAuthenticationManager.java:202)
at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HT
TPConnection.java:481)
at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HT
TPConnection.java:255)
at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HT
TPConnection.java:243)
at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabili
ties(DAVConnection.java:452)
at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnecti
on.java:95)
at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(D
AVRepository.java:642)
at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.getDir(DAVReposi
tory.java:288)
原因应该是他们使用的是域用户认证,那么代码就应该改:
initialize();
ISVNAuthenticationManager authManager = SVNWCUtil.createDefaultAuthenticationManager(this.username,this.password);
但是那么改呢,看svnkit文档脑壳都看大了,英语太撇老。。。。求大神帮助。。。
ps:以后得认真学英语。。 --------------------编程问答-------------------- 服务器url 不对 或 者 用户名 密码有问题。 --------------------编程问答-------------------- svnkit不支持端口号,将端口号去掉试试 --------------------编程问答-------------------- org.tmatesoft.svn.core.SVNAuthenticationException: svn: Authentication required for '<http://svn.xxx.cn:80>'
原因:据说是svnkit包的一个bug.
解决方案:
添加JVM系统参数-Dsvnkit.http.methods=Basic,Digest,NTLM
System.setProperty("svnkit.http.methods", "Basic,Digest,NTLM"); --------------------编程问答--------------------
哥们,谢谢你了!问题解决了!!
补充:Java , Java EE