在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或示例中可能很有用。