代码之家  ›  专栏  ›  技术社区  ›  user2427771

JGit在TransportConfigCallback中抛出ClassCastException

  •  -1
  • user2427771  · 技术社区  · 7 年前

    我正在尝试使用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:组织。日食jgit。运输传输HTTP 无法转换为组织。日食jgit。运输SSH运输

    我错过了什么?我使用的是JGit版本4.10.0.201712302008-r。

    2 回复  |  直到 4 年前
        1
  •  2
  •   Rüdiger Herrmann    5 年前

    该代码仅用于处理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
        }
      }
    } );
    
        2
  •  0
  •   Dimuth Tharaka Menikgama    7 年前

    设置时:cloneCommand。setURI(“”ssh://user@示例。com/回购。git”); 使用ssh协议指示url,即github中的repo。 示例- (ssh://git@github.com:githubtraining/hellogitworld.git)

    参考此 https://github.com/allegro/axion-release-plugin/issues/101