我正在尝试使用JGit。我尝试关注http://www.codeaffine.com/2014/12/09/jgit-authentication/,下面的代码块会引发ClassCastException
remoteRepository.setTransportConfigCallback(new TransportConfigCallback() {
@Override
public void configure(Transport transport) {
SshTransport sshTransport = (SshTransport) transport;
sshTransport.setSshSessionFactory(sshSessionFactory);
}
});
例外:
java.lang.ClassCastException:org.eclipse.jgit.transport.TransportHttp 无法转换为org.eclipse.jgit.transport.SshTransport
我错过了什么?我正在使用JGit版本4.10.0.201712302008-r。
答案 0 :(得分:0)
设置:cloneCommand.setURI(" ssh://user@example.com/repo.git");
用ssh协议表示url,github中的repo。
示例 - (ssh://git@github.com:githubtraining/hellogitworld.git)
请参阅此https://github.com/allegro/axion-release-plugin/issues/101
答案 1 :(得分:0)
代码仅用于处理SSH连接。如果您通过其他协议进行连接,则需要调整代码以了解transport
可能与SshTransport
不同。
例如:
command.setTransportConfigCallback(new TransportConfigCallback() {
@Override
public void configure(Transport transport) {
if( transport instanceof SshTransport ) {
SshTransport sshTransport = (SshTransport) transport;
sshTransport.setSshSessionFactory( sshSessionFactory );
} else if( transport instanceof HttpTransport ) {
// configure HTTP protocol specifics
}
}
} );