0

Digital Ocean Java ライブラリを使用しようとしていますが、接続を作成しようとすると、次のようになります。

CloseableHttpClient httpClient = HttpClients.createDefault();

client = new DigitalOceanClient("v2", token, httpClient);

問題はCloseableHttpClient httpClientオブジェクトにあります。ライブラリは httpcore バージョン 4.4.1 と httpclient バージョン 4.5 を使用します。それは私にjava.lang.NoSuchFieldErrorを与えます。

これが私のログです:

Exception in thread "main" java.lang.NoSuchFieldError: INSTANCE
at org.apache.http.conn.ssl.SSLConnectionSocketFactory.<clinit>(SSLConnectionSocketFactory.java:144)
at org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:955)
at org.apache.http.impl.client.HttpClients.createDefault(HttpClients.java:58)
at main.java.servers.DigitalOceanServer.setup(DigitalOceanServer.java:28)

NoSuchFieldError に関する情報やドキュメントはほとんど見つからなかったので、このエラーの原因となった httpcore や httpclient のバージョンに関係していると思います。

4

1 に答える 1

0

フィールド変数INSTANCEは、Apache httpclient バージョン 4.4 以降、AllowAllHostnameVerifier.java に導入されました。

の新しいバージョンSSLConnectionSocketFactoryと古いバージョンの両方AllowAllHostnameVerifierが使用されている場合は、 thenjava.lang.NoSuchFieldError: INSTANCEがスローされます。

考えられる原因の 1 つは、2 つのバージョンの Apache httpclient jar がライブラリ ディレクトリにあることです。

于 2017-06-19T05:43:07.770 に答える