2017-03-29 8 views
0

私はJSchを使って、Javaでグラフィカルなsshブラウザを実装しようとしています。 ChannelSftp.ls呼び出しの結果を取得したいのですが、nullpointer例外が発生します...セッションをチェックしました。オープンでログインしています。execのチャネルを開いてlsコマンドを送信すると、ディレクトリの内容をStringとして返します。次されているコード:JSch ChannelSftp.lsがnullpointerを投げる

public Vector listContents() { 
    Channel channel = null; 
    ConnectionThread conn = SSHBrowser.conn; 

    Session sess = conn.getSession(); 
    System.out.println(sess.getUserName()); //prints out the given username, not null, so the session is initialized 
    try { 
     channel = sess.openChannel("sftp"); 
    } catch (JSchException ex) { 
     ex.printStackTrace(); 
    } 
    Vector<ChannelSftp.LsEntry> result = null; 

    try { 

     result = ((ChannelSftp) channel).ls("/srv"); // throws nullpointer here 
     for (ChannelSftp.LsEntry dir : result) { 
      System.out.print(dir.getLongname()); 
     } 

    } catch (SftpException e) { 
     e.printStackTrace(); 
    } 
    return result; 
} 

スタックトレース、私が手に次のようである:

at com.jcraft.jsch.ChannelSftp.ls(ChannelSftp.java:1747) 
    at com.jcraft.jsch.ChannelSftp.ls(ChannelSftp.java:1553) 
    at ssh.browser.ResultElement.listContents(ResultElement.java:69) 
    at ssh.browser.ConsoleCommand.lsTest(ConsoleCommand.java:68) 
    at ssh.browser.SSHBrowser$3.handle(SSHBrowser.java:113) 
    at ssh.browser.SSHBrowser$3.handle(SSHBrowser.java:103) 
    at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(CompositeEventHandler.java:86) 
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:238) 
    at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(EventHandlerManager.java:191) 
    at com.sun.javafx.event.CompositeEventDispatcher.dispatchBubblingEvent(CompositeEventDispatcher.java:59) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:58) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) 
    at com.sun.javafx.event.BasicEventDispatcher.dispatchEvent(BasicEventDispatcher.java:56) 
    at com.sun.javafx.event.EventDispatchChainImpl.dispatchEvent(EventDispatchChainImpl.java:114) 
    at com.sun.javafx.event.EventUtil.fireEventImpl(EventUtil.java:74) 
    at com.sun.javafx.event.EventUtil.fireEvent(EventUtil.java:54) 
    at javafx.event.Event.fireEvent(Event.java:198) 
    at javafx.scene.Scene$KeyHandler.process(Scene.java:3964) 
    at javafx.scene.Scene$KeyHandler.access$1800(Scene.java:3910) 
    at javafx.scene.Scene.impl_processKeyEvent(Scene.java:2040) 
    at javafx.scene.Scene$ScenePeerListener.keyEvent(Scene.java:2501) 
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$KeyEventNotification.run(GlassViewEventHandler.java:217) 
    at com.sun.javafx.tk.quantum.GlassViewEventHandler$KeyEventNotification.run(GlassViewEventHandler.java:149) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.lambda$handleKeyEvent$353(GlassViewEventHandler.java:248) 
    at com.sun.javafx.tk.quantum.QuantumToolkit.runWithoutRenderLock(QuantumToolkit.java:389) 
    at com.sun.javafx.tk.quantum.GlassViewEventHandler.handleKeyEvent(GlassViewEventHandler.java:247) 
    at com.sun.glass.ui.View.handleKeyEvent(View.java:546) 
    at com.sun.glass.ui.View.notifyKey(View.java:966) 
    at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) 
    at com.sun.glass.ui.win.WinApplication.lambda$null$148(WinApplication.java:191) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.NullPointerException 
    at com.jcraft.jsch.ChannelSftp.ls(ChannelSftp.java:1570) 
    ... 37 more 

私はここで何nullの可能性がある可能性が分からない...あなたが助けてくださいことはできますか?

+0

実際のNULLポインタ例外のスタックトレースとは何ですか? ( 'getCause()') –

答えて

3

また、チャンネルに接続する必要があります。

ChannelSftp channel = (ChannelSftp) session.openChannel("sftp"); 
channel.connect(); 

for (Object entry : channel.ls("/srv")) { 
    System.out.println(entry); 
} 

SFTP exampleを見てください。

+0

ありがとう、私はそれを忘れてしまった! –

関連する問題