Java >> Java Tutorial >  >> Java

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.


Java-Tag