2016-06-27 2 views
-1

이 코드를 사용하여 서버에 연결하려고하면 NetBeans의 코드를 일반 Java 프레임으로 시도하고 응용 프로그램이 안드로이드로 전송되면 작동을 멈추게됩니다. 내가 추가해야하는 다른 것이나 코드에 문제가 있다는 것을 명시했다.JSch in android

public class MainActivity extends AppCompatActivity { 

    String host; 
    String ip; 
    String password; 

    Session s; 
    int x; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
    } 
    public void onClick(View view) throws Exception { 
      EditText t1 = (EditText) findViewById(R.id.editText); 
      EditText t2 = (EditText) findViewById(R.id.editText2); 
      EditText t3 = (EditText) findViewById(R.id.editText3); 

     if (t1 != null && t2 != null && t3 != null) { 
      host = t1.getText().toString(); 
      ip = t2.getText().toString(); 
      password = t3.getText().toString(); 

      JSch jsch = new JSch(); 
      Session session = jsch.getSession(host, ip, 22); 
      session.setPassword(password); 

      // Avoid asking for key confirmation 
      Properties prop = new Properties(); 
      prop.put("StrictHostKeyChecking", "no"); 
      session.setConfig(prop); 

      session.connect(); 

      // SSH Channel 
      ChannelExec channelssh = (ChannelExec) 
      session.openChannel("exec"); 
      ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
      channelssh.setOutputStream(baos); 

      // Execute command 
      channelssh.setCommand("ls"); 
      channelssh.connect(); 
      channelssh.disconnect(); 
     } 
     else { 
      Toast.makeText(MainActivity.this, "Invaild Input", Toast.LENGTH_LONG).show(); 
     } 
    } 
} 

로그 캣 :

06-27 16:28:40.607 7274-7274/com.example.mzj.cisco E/AndroidRuntime: FATAL EXCEPTION: main 

Process: com.example.mzj.cisco, PID: 7274 
java.lang.IllegalStateException: Could not execute method for android:onClick 
    at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener 
      .onClick(AppCompatViewInflater.java:293) 
    at android.view.View.performClick(View.java:4438) 
    at android.view.View$PerformClick.run(View.java:18422) 
    at android.os.Handler.handleCallback(Handler.java:733) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:136) 
    at android.app.ActivityThread.main(ActivityThread.java:5017) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:515) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
    at dalvik.system.NativeStart.main(Native Method) 
    Caused by: java.lang.reflect.InvocationTargetException 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:515) 
    at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener 
      .onClick(AppCompatViewInflater.java:288) 
    at android.view.View.performClick(View.java:4438) 
    at android.view.View$PerformClick.run(View.java:18422) 
    at android.os.Handler.handleCallback(Handler.java:733) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:136) 
    at android.app.ActivityThread.main(ActivityThread.java:5017) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:515) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
    at dalvik.system.NativeStart.main(Native Method) 
    Caused by: com.jcraft.jsch.JSchException: android.os.NetworkOnMainThreadException 
    at com.jcraft.jsch.Util.createSocket(Util.java:258) 
    at com.jcraft.jsch.Session.connect(Session.java:186) 
    at com.jcraft.jsch.Session.connect(Session.java:145) 
    at com.example.mzj.cisco.MainActivity.onClick(MainActivity.java:57) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:515) 
    at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener 
     .onClick(AppCompatViewInflater.java:288) 
    at android.view.View.performClick(View.java:4438) 
    at android.view.View$PerformClick.run(View.java:18422) 
    at android.os.Handler.handleCallback(Handler.java:733) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:136) 
    at android.app.ActivityThread.main(ActivityThread.java:5017) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:515) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
    at dalvik.system.NativeStart.main(Native Method) 
    Caused by: android.os.NetworkOnMainThreadException 
    at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1145) 
    at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:84) 
    at libcore.io.IoBridge.connectErrno(IoBridge.java:127) 
    at libcore.io.IoBridge.connect(IoBridge.java:112) 
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:192) 
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172) 
    at java.net.Socket.startupSocket(Socket.java:567) 
    at java.net.Socket.tryAllAddresses(Socket.java:128) 
    at java.net.Socket.<init>(Socket.java:178) 
    at java.net.Socket.<init>(Socket.java:150) 
    at com.jcraft.jsch.Util.createSocket(Util.java:252) 
    at com.jcraft.jsch.Session.connect(Session.java:186) 
    at com.jcraft.jsch.Session.connect(Session.java:145) 
    at com.example.mzj.cisco.MainActivity.onClick(MainActivity.java:57) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:515) 
    at android.support.v7.app.AppCompatViewInflater$DeclaredOnClickListener 
      .onClick(AppCompatViewInflater.java:288) 
    at android.view.View.performClick(View.java:4438) 
    at android.view.View$PerformClick.run(View.java:18422) 
    at android.os.Handler.handleCallback(Handler.java:733) 
    at android.os.Handler.dispatchMessage(Handler.java:95) 
    at android.os.Looper.loop(Looper.java:136) 
    at android.app.ActivityThread.main(ActivityThread.java:5017) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:515) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
    at dalvik.system.NativeStart.main(Native Method) 

답변

1

당신은

+0

이 질문에 중복 노골적으로 답변을 대신 중복으로 그들을 닫지 마십시오 메인 스레드에서 다른 스레드에서이 작업을 수행 할 수 있습니다. –