2

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

我在用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();
        }   
    }

}

但我得到以下异常:

    线程“main”中的异常 java.lang.NoClassDefFoundError: org.slf4j.LoggerFactory
    在 net.schmizz.sshj.DefaultConfig.(DefaultConfig.java:92)
    在 net.schmizz.sshj.SSHClient.(SSHClient.java:133)
    在 SSHTEST.main(SSHTEST.java:24)
引起:java.lang.ClassNotFoundException:org.slf4j.LoggerFactory
    在 java.net.URLClassLoader.findClass(URLClassLoader.java:419)
    在 java.lang.ClassLoader.loadClass(ClassLoader.java:643)
    在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:345)
    在 java.lang.ClassLoader.loadClass(ClassLoader.java:609)
    ......

我需要额外的罐子吗,我需要多少额外的罐子。我执行正确吗?请帮忙。

提前致谢。

4

3 回答 3

3

从谷歌搜索sshj,第一个结果揭示了答案:

依赖项

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

于 2010-09-02T16:19:48.687 回答
2

是的,您需要 slf4j 的罐子(请参阅2 页手册

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

于 2010-09-02T16:22:04.630 回答
1

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

于 2010-09-03T22:29:42.740 回答