简体   繁体   English

NoClassDefFoundError: org/bouncycastle/openssl/PEMParser 在 Jenkins 上使用 SSHJ 时

[英]NoClassDefFoundError: org/bouncycastle/openssl/PEMParser when using SSHJ on Jenkins

I'm using SSHJ to execute commands on a remote server, connecting like so:我正在使用 SSHJ 在远程服务器上执行命令,像这样连接:

private static void connect() {
    try {
        client = new SSHClient();
        client.addHostKeyVerifier(new PromiscuousVerifier());
        client.connect(HOST);
        String path = System.getProperty("/**/user.home") + "/.ssh/id_rsa";
        client.authPublickey(USER, client.loadKeys(path));
    } catch (IOException e) {
        logErrorAndRethrowException("Error connecting to server via SSH", e);
    }
}

When I run this in my IDE, it runs without an issue.当我在 IDE 中运行它时,它运行没有问题。 However, when I try to run it on a Jenkins environment using Gradle, I get the following stack trace:但是,当我尝试使用 Gradle 在 Jenkins 环境中运行它时,我得到以下堆栈跟踪:

Exception in thread "reader" java.lang.NoClassDefFoundError: org/bouncycastle/openssl/PEMParser
    at net.schmizz.sshj.userauth.keyprovider.PKCS8KeyFile.readKeyPair(PKCS8KeyFile.java:131)
    at net.schmizz.sshj.userauth.keyprovider.PKCS8KeyFile.getPrivate(PKCS8KeyFile.java:72)
    at net.schmizz.sshj.userauth.method.KeyedAuthMethod.putSig(KeyedAuthMethod.java:59)
    at net.schmizz.sshj.userauth.method.AuthPublickey.sendSignedReq(AuthPublickey.java:74)
    at net.schmizz.sshj.userauth.method.AuthPublickey.handle(AuthPublickey.java:45)
    at net.schmizz.sshj.userauth.UserAuthImpl.handle(UserAuthImpl.java:143)
    at net.schmizz.sshj.transport.TransportImpl.handle(TransportImpl.java:511)
    at net.schmizz.sshj.transport.Decoder.decode(Decoder.java:107)
    at net.schmizz.sshj.transport.Decoder.received(Decoder.java:175)
    at net.schmizz.sshj.transport.Reader.run(Reader.java:60)
Caused by: java.lang.ClassNotFoundException: org.bouncycastle.openssl.PEMParser
    at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 10 more

I've tried adding bouncycastle as a separate dependency (both the bcprov and bcpkix packages) even though SSHJ brings it in, I've mucked around a bunch with versions, I've tried with the Jenkins bouncycastle plugin both enabled and disabled.我试过将 bouncycastle 添加为单独的依赖项(bcprov 和 bcpkix 包),即使 SSHJ 将其引入,我也尝试了一堆版本,我试过启用和禁用 Jenkins bouncycastle 插件。 I've also tried with the schmizz SSHJ instead of Hierynomus.我也尝试过使用 schmizz SSHJ 而不是 Hierynomus。

I'm using Java 8, Gradle 3.2.1 (cause reasons), Jenkins 2.190.3, and Hierynomus SSHJ 0.27.我使用的是 Java 8、Gradle 3.2.1(原因)、Jenkins 2.190.3 和 Hierynomus SSHJ 0.27。

I found the problem.我发现了问题。 Another dependency I was importing was quietly bringing in an older version of bouncycastle, which was overriding the one SSHJ brings in. I excluded that dependency and solved the problem.我正在导入的另一个依赖项是悄悄地引入了旧版本的 bouncycastle,它覆盖了 SSHJ 引入的一个。我排除了该依赖项并解决了问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 使用 Apache CXF 时 org.bouncycastle.asn1.x509.SubjectPublicKeyInfo 的 NoClassDefFoundError - NoClassDefFoundError for org.bouncycastle.asn1.x509.SubjectPublicKeyInfo when using Apache CXF NoClassDefFoundError:org/bouncycastle/jce/provider/BouncyCastleProvider - NoClassDefFoundError: org/bouncycastle/jce/provider/BouncyCastleProvider NoClassDefFoundError: org/bouncycastle/jce/spec/ECPublicKeySpec 即使 bouncycastle 可用 - NoClassDefFoundError: org/bouncycastle/jce/spec/ECPublicKeySpec even though bouncycastle is available 如何使用BouncyCastle通过Java中的PEMParser读取没有BEGIN和END的PEM证书 - How to read a PEM certificate without BEGIN and END via PEMParser in Java using BouncyCastle java.lang.NoClassDefFoundError: org.bouncycastle.jce.provider.BouncyCastleProvider - java.lang.NoClassDefFoundError: org.bouncycastle.jce.provider.BouncyCastleProvider java.lang.NoClassDefFoundError: org.bouncycastle.asn1.ASN1Encodable - java.lang.NoClassDefFoundError: org.bouncycastle.asn1.ASN1Encodable 尝试使用itext签名pdf时出错:线程“主”中的异常java.lang.NoClassDefFoundError:org / bouncycastle / cert / X509CertificateHolder - error on trying to sign pdf using itext :Exception in thread “main” java.lang.NoClassDefFoundError: org/bouncycastle/cert/X509CertificateHolder sshj 0.9.0引发NoClassDefFoundError:net / schmizz / sshj / SSHClient - sshj 0.9.0 throwing NoClassDefFoundError: net/schmizz/sshj/SSHClient NoClassDefFoundError-使用Mockito和PowerMock时的org / mockito / exceptions / Reporter - NoClassDefFoundError - org/mockito/exceptions/Reporter when Using Mockito and PowerMock NoClassDefFoundError:使用DropWizard时的org / eclipse / jetty / io / ByteBufferPool - NoClassDefFoundError: org/eclipse/jetty/io/ByteBufferPool when using DropWizard
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM