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

}

しかし、次の例外が発生します。

    スレッド「メイン」の例外 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) で
    .....

追加の jar が必要ですか、追加の jar はいくつ必要ですか。私は正しく実装していますか?助けてください。

前もって感謝します。

4

3 に答える 3

3

グーグルsshjから、最初の結果は答えを明らかにします:

依存関係

Java6以降。slf4jが必要です。 一部の暗号化アルゴリズムを使用するには、bouncycastleを強くお勧めします。zlib圧縮を使用するには、jzlibが必要です。

于 2010-09-02T16:19:48.687 に答える
2

はい、slf4j 用の jar が必要です ( 2 ページのマニュアルを参照してください) 。

slf4j には API とプラグイン可能な実装が付属していますが、提案された slf4j-simple は問題ないはずです

于 2010-09-02T16:22:04.630 に答える
1

slf4jは単なるファサードであり、具体的な実装を提供する必要があります。ロギングをあまり気にしない場合は、slf4jディストリビューションにあるslf4j-nop-$(ver).jarに固執してください。

于 2010-09-03T22:29:42.740 に答える