JGit在TransportConfigCallback中抛出ClassCastException

时间:2018-02-16 05:33:04

标签: classcastexception jgit

我正在尝试使用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。

2 个答案:

答案 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
    }
  }
} );