在java中使用sshj时ssh的问题

时间:2010-09-02 16:12:18

标签: java ssh sshj

我正在尝试与服务器建立远程连接以执行某些命令。 我是新手,所以开始谷歌搜索。经过一番搜索,我试了一下:

我正在使用sshj0.2.3.jar.

以下是我实施它的方式:

public static void main(String[] args) throws IOException {
    // TODO Auto-generated method stub
    final SSHClient ssh = new SSHClient();
    ssh.loadKnownHosts();
    ssh.connect("serverName");
    try{
        ssh.authPublickey("myUserId");
        final Session session = ssh.startSession();
        try{
            final Command cmd = session.exec("net send myMachineName Hello!!!");
            System.out.println(cmd.getOutputAsString());
            System.out.println("\n Exit Status: "+cmd.getExitStatus());
        }finally{
            session.close();
        }
        }finally{
            ssh.disconnect();
        }   
    }

}

但我得到了以下例外:

    Exception in thread "main" java.lang.NoClassDefFoundError: org.slf4j.LoggerFactory
    at net.schmizz.sshj.DefaultConfig.(DefaultConfig.java:92)
    at net.schmizz.sshj.SSHClient.(SSHClient.java:133)
    at SSHTEST.main(SSHTEST.java:24)
Caused by: java.lang.ClassNotFoundException: org.slf4j.LoggerFactory
    at java.net.URLClassLoader.findClass(URLClassLoader.java:419)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:643)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:345)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:609)
    .....

我需要额外的罐子,我需要多少个额外的罐子。我是否正确实施? 请帮忙。

提前致谢。

3 个答案:

答案 0 :(得分:3)

通过Google搜索sshjfirst result显示答案:

  

依赖

     

Java 6+。 slf4j是必需的。   强烈推荐bouncycastle   使用一些加密所需   算法。需要jzlib   使用zlib压缩。

答案 1 :(得分:2)

是的,你需要slf4j的罐子(见the 2-page manual

slf4j附带一个API然后是一个可插拔的实现,但是建议的slf4j-simple应该没问题

答案 2 :(得分:1)

slf4j只是一个门面,你需要提供一个具体的实现。如果你真的不关心日志记录,请坚持slf4j-nop - $(ver).jar,它存在于slf4j发行版中。