maven - java.lang.NoSuchFieldError: INSTANCE in bitpay SDK -
i want implement this code
public void testgetexchangerate() throws exception { eckey key = keyutils.createeckey(); string clientname = "server 1"; bitpay bitpay = new bitpay(key, clientname); if (!bitpay.clientisauthorized(bitpay.facade_merchant)) { // merchant facade authorization code string pairingcode = bitpay.requestclientauthorization( bitpay.facade_merchant); // signal device operator client needs // paired merchant account. system.out.print("info: pair client merchant account using pairing code: " + pairingcode); throw new bitpayexception("error:client not authorized merchant facade"); } }
i included these dependencies:
<dependency> <groupid>com.github.bitpay</groupid> <artifactid>java-bitpay-client</artifactid> <version>v2.0.4</version> </dependency> <dependency> <groupid>org.apache.httpcomponents</groupid> <artifactid>httpcore</artifactid> <version>4.4.5</version> <type>jar</type> </dependency>
but when run code get:
testgetexchangerate(com.payment.gateway.bitpay.impl.bitpayimpltest) time elapsed: 1.665 sec <<< error! java.lang.nosuchfielderror: instance @ com.payment.gateway.bitpay.impl.bitpayimpltest.testgetexchangerate(bitpayimpltest.java:55)
question: can give advice how can fix this?
looking @ maven dependencies of pom.xml
file of library project on github, although not same artifact version, can see java-bitpay-client
depends on several libraries org.apache.httpcomponents
:
<dependency> <groupid>org.apache.httpcomponents</groupid> <artifactid>fluent-hc</artifactid> <version>4.3.1</version> </dependency> <dependency> <groupid>org.apache.httpcomponents</groupid> <artifactid>httpclient</artifactid> <version>4.3.1</version> </dependency> <dependency> <groupid>org.apache.httpcomponents</groupid> <artifactid>httpclient-cache</artifactid> <version>4.3.1</version> </dependency> <dependency> <groupid>org.apache.httpcomponents</groupid> <artifactid>httpcore</artifactid> <version>4.3</version> </dependency> <dependency> <groupid>org.apache.httpcomponents</groupid> <artifactid>httpmime</artifactid> <version>4.3.1</version> </dependency>
among which:
<dependency> <groupid>org.apache.httpcomponents</groupid> <artifactid>httpcore</artifactid> <version>4.3</version> </dependency>
in dependencies instead have httpcore
version 4.4.5
, hence there dependency conflict, pointed out jacob in comments , linked similar question.
via maven dependency mediation mechanism, build pick latest, version 4.4.5
, because explicitely declared among dependencies, hence @ runtime java-bitpay-client
have in classpath different version of 1 of dependencies, may cause final exception.
a possible solution remove httpcore
dependency dependencies
, let come classpath via transitive dependencies (version 4.3
should into).
you can confirm description above running console on project:
mvn dependency:tree -dincludes=com.github.bitpay
you should get, among other transitive dependencies, httpcore
.
side note: see defined dependency type
having value jar
. can omit that, jar
default value dependency type
, is, dependencies default jar files. official pom reference:
type
: corresponds dependant artifact'spackaging
type. defaultsjar
.
Comments
Post a Comment