java.lang.NoClassDefFoundError 时访问外部构建路径中存在的 jar



我在 eclipse 中的项目外部构建路径中添加了一个新 jar:

C:\folder\projectFolder\lib\jcabi-ssh-1.5.2.jar

添加了导入语句:

import com.jcabi.ssh.SSH;
import com.jcabi.ssh.Shell;

添加了测试命令:

Shell shell = new SSH(...);
String stdout = new Shell.Plain(shell).exec("echo 'Hello, world!'");

在运行项目之前,IDE 中没有显示任何问题。

运行项目后,我得到:

java.lang.NoClassDefFoundError: com/jcraft/jsch/JSchException

在关注其他一些帖子后,我看到了:

System.out.println(System.getProperty("java.class.path"));

返回包含以下内容的列表:

C:folderprojectFolderlibjcabi-ssh-1.5.2.jar

在这种情况下还缺少什么?我在外部构建路径中的所有其他 jar 都工作正常。

谢谢!

jar文件 jcabi-ssh-1.5.2.jar 只包含包com.jcabi.ssh中的类,但缺少的类不属于该包。

因此,您的代码没有显式引用 JSchException 类,这就是为什么您的 IDE 中一切正常的原因。 但是,当你运行应用程序并且一些jcabi类说"抛出新的JSchException"时 - 这就是JVM开始寻找它的时候。

JSchException可以在 JSch 罐中找到。 例如,您可以从 http://www.jcraft.com/jsch/下载它。

但是,请注意,该jar文件并不是jcabi类具有的唯一依赖项 - 您可以在maven存储库站点中看到"编译依赖项"部分的完整列表,例如:

https://mvnrepository.com/artifact/com.jcabi/jcabi-ssh/1.5.2

所以你还必须下载所有这些,以及所有这些具有的所有编译依赖项,以及所有编译依赖项.....

更容易的是让系统为您加载所有依赖项 - 这就是 maven 和 ivy 以及其他人所做的。

相关内容

  • 没有找到相关文章

最新更新