shaqian / flutter_ssh

SSH and SFTP client for Flutter
https://pub.dartlang.org/packages/ssh
MIT License
117 stars 83 forks source link

java.lang.NoClassDefFoundError: Failed resolution of: Lorg/ietf/jgss/Oid; when call client.connect() #3

Closed loongwind closed 5 years ago

loongwind commented 5 years ago

call client.connect() throw NoClassDefFoundError

exception:

W/le.startupname(16110): Unresolved exception class when finding catch block: org.ietf.jgss.GSSException
E/AndroidRuntime(16110): FATAL EXCEPTION: Thread-2
E/AndroidRuntime(16110): Process: com.example.startupnamer, PID: 16110
E/AndroidRuntime(16110): java.lang.NoClassDefFoundError: Failed resolution of: Lorg/ietf/jgss/Oid;
E/AndroidRuntime(16110):    at com.jcraft.jsch.jgss.GSSContextKrb5.create(GSSContextKrb5.java:55)
E/AndroidRuntime(16110):    at com.jcraft.jsch.UserAuthGSSAPIWithMIC.start(UserAuthGSSAPIWithMIC.java:125)
E/AndroidRuntime(16110):    at com.jcraft.jsch.Session.connect(Session.java:470)
E/AndroidRuntime(16110):    at com.jcraft.jsch.Session.connect(Session.java:183)
E/AndroidRuntime(16110):    at sq.flutter.ssh.SshPlugin$1.run(SshPlugin.java:156)
E/AndroidRuntime(16110):    at java.lang.Thread.run(Thread.java:764)
E/AndroidRuntime(16110): Caused by: java.lang.ClassNotFoundException: Didn't find class "org.ietf.jgss.Oid" on path: DexPathList[[zip file "/system/framework/org.apache.http.legacy.boot.jar", zip file "/data/app/com.example.startupnamer-YbOYR6B1BxIvTZSHi5YUmw==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.startupnamer-YbOYR6B1BxIvTZSHi5YUmw==/lib/arm64, /data/app/com.example.startupnamer-YbOYR6B1BxIvTZSHi5YUmw==/base.apk!/lib/arm64-v8a, /system/lib64, /vendor/lib64]]
E/AndroidRuntime(16110):    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:134)
E/AndroidRuntime(16110):    at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
E/AndroidRuntime(16110):    at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
E/AndroidRuntime(16110):    ... 6 more

code:

   var client = new SSHClient(
      host: "www.xxxx.com",
      port: 22,
      username: "root",
      passwordOrKey: "xxxxx",
    );

    try{
      String re = await client.connect();
      if (re == "session_connected"){
        print("connecte");
      }
    }catch(e){
      print('Error: ${e.toString()}');
    }
shaqian commented 5 years ago

Seems to be an issue with JSCh https://stackoverflow.com/questions/28411153/jsch-suppressed-java-lang-classnotfoundexception-lorg-ietf-jgss-oid

Can you please try adding session.setConfig("PreferredAuthentications", "password"); after https://github.com/shaqian/flutter_ssh/blob/master/android/src/main/java/sq/flutter/ssh/SshPlugin.java#L153

loongwind commented 5 years ago

add session.setConfig("PreferredAuthentications", "password"); can running thx