Ein Tipp, um Hüpfburgfehler zu vermeiden
java.lang.NoSuchMethodError:org.bouncycastle.math.ec.ECCurve$Fp – Problem
In diesem Beitrag werde ich einen Tipp diskutieren, den jeder verwenden kann, um Hüpfburgfehler zu vermeiden.
Problem
Kürzlich habe ich daran gearbeitet, einen SOAP-Webservice zu erstellen, bei dem wir Apache CXF-Bibliotheken zusammen mit Spring Boot verwendet haben. Wir haben den Webservice erstellt, aber als wir eine SOAP-Anfrage über den Client gesendet haben, haben wir immer wieder den folgenden Fehler erhalten:
Caused by: java.lang.NoSuchMethodError: org.bouncycastle.math.ec.ECCurve$Fp.<init>(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;)V at org.bouncycastle.jcajce.provider.asymmetric.util.EC5Util.convertCurve(Unknown Source) at org.bouncycastle.jcajce.provider.asymmetric.util.EC5Util.convertPoint(Unknown Source) at org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPublicKey.<init>(Unknown Source) at org.bouncycastle.jcajce.provider.asymmetric.ec.KeyFactorySpi.engineGeneratePublic(Unknown Source) at java.security.KeyFactory.generatePublic(KeyFactory.java:334) at sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.<init>(HandshakeMessage.java:1075) at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:284) at sun.security.ssl.Handshaker.processLoop(Handshaker.java:1026) at sun.security.ssl.Handshaker.process_record(Handshaker.java:961) at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1062) at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1375) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1403) at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1387) at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:553) at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:412) at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:179) at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:328) at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:612) at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:447) at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:884) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:107) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55) at org.springframework.ws.transport.http.HttpComponentsConnection.onSendAfterWrite(HttpComponentsConnection.java:121)
Ein einfacher Tipp, um diesen Fehler zu vermeiden –
Wir haben verschiedene Dinge versucht, um dieses Problem zu lösen. Wir haben versucht, bouncycastle
auszuschließen Gläser von cxf-rt-ws-security
Abhängigkeiten, die wir verwendet haben, als wir sie aus anderen Abhängigkeiten gezogen haben. Aber dieser Fehler würde immer noch zeitweise auftauchen. Schließlich habe ich das Problem herausgefunden. Wir mussten diese Abhängigkeit von bouncycastle
hinzufügen explizit wie unten in unserer Gradle-Build-Datei. Dann verschwand der Fehler.
kompilieren (‘org.bouncycastle:bcprov-jdk15on:1.56’)
Schlussfolgerung
In diesem Beitrag habe ich gezeigt, wie man diesen einen Tipp verwendet, um den Fehler zu vermeiden, der durch die Hüpfburg verursacht wird. Wenn Ihnen dieser Beitrag gefallen hat, abonnieren Sie hier meinen Blog.