Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中使用sshj时ssh出现问题_Java_Ssh_Sshj - Fatal编程技术网

在java中使用sshj时ssh出现问题

在java中使用sshj时ssh出现问题,java,ssh,sshj,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(

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

我正在使用
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) ..... 线程“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) ..... 我需要额外的罐子吗?我需要多少额外的罐子。我的实施是否正确?。 请帮忙


提前感谢。

通过谷歌
sshj
,答案如下:

依赖关系

Java6+。是必需的。 强烈推荐和 需要使用一些加密 算法。是必需的 使用zlib压缩


是的,您需要slf4j的罐子(请参阅)


slf4j附带了一个API,然后是一个可插拔的实现,但是建议的slf4j simple应该很好

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

我使用的是1.5 java。还有别的办法吗。我只想在远程服务器上执行一些命令。谢谢。是的-您需要slf4j来解析您看到的特定消息。我从下载了zip文件,但收到了相同的错误。我现在收到了此异常:线程“main”java.io.IOException中的异常:无法在net.schmizz.sshj.SSHClient.loadKnownHosts(SSHClient.java:528)SSHTEST.main加载已知的主机(SSHTEST.java:25)库读取默认位置~/.ssh/known_hosts中的已知_hosts文件。创建一个文件的最简单方法是使用ssh登录一次远程服务器。ssh请求确认并为远程主机创建一个条目。从现在起,Java可以安全地使用此主机。如果要使用其他位置的文件,请使用其他版本loadKnownHost的,文件位置作为参数。这在Windows或示例上可能很有用。我使用的是1.5 java。是否有其他方法。我只想在远程服务器上执行一些命令。Thank.slf4j没有特殊要求,并且与java 1.4兼容。如果您将其放到类路径中,此错误将消失,一个nd您将能够跟踪控制台上的日志消息我现在得到了以下异常:线程“main”java.io.IOException中的异常:无法在net.schmizz.sshj.SSHClient.loadKnownHosts(SSHClient.java:528)在SSHTEST.main(SSHTEST.java:25)加载已知的主机库读取默认位置~/.ssh/known_hosts中的已知_hosts文件。创建一个文件的最简单方法是使用ssh登录一次远程服务器。ssh请求确认并为远程主机创建一个条目。从现在起,Java可以安全地使用此主机。如果要使用其他位置的文件,请使用其他版本以文件位置作为参数的loadKnownHost的。这在Windows或示例中可能很有用。