2014-12-09 2 views
0

При запуске приложения с использованием HttpComponents 4.3.6 в Wildfly появляется следующее сообщение об ошибке. Как я могу это исправить?java.lang.NoSuchFieldError: INSTANCE в Apache HttpComonents и Wildfly

Caused by: java.lang.NoSuchFieldError: INSTANCE 
at org.apache.http.impl.io.DefaultHttpRequestWriterFactory.<init>(DefaultHttpRequestWriterFactory.java:52) [httpcore-4.3.3.jar:4.3.3] 
at org.apache.http.impl.io.DefaultHttpRequestWriterFactory.<init>(DefaultHttpRequestWriterFactory.java:56) [httpcore-4.3.3.jar:4.3.3] 
at org.apache.http.impl.io.DefaultHttpRequestWriterFactory.<clinit>(DefaultHttpRequestWriterFactory.java:46) [httpcore-4.3.3.jar:4.3.3] 
at org.apache.http.impl.conn.ManagedHttpClientConnectionFactory.<init>(ManagedHttpClientConnectionFactory.java:72) [httpclient-4.3.6.jar:4.3.6] 
at org.apache.http.impl.conn.ManagedHttpClientConnectionFactory.<init>(ManagedHttpClientConnectionFactory.java:84) [httpclient-4.3.6.jar:4.3.6] 
at org.apache.http.impl.conn.ManagedHttpClientConnectionFactory.<clinit>(ManagedHttpClientConnectionFactory.java:59) [httpclient-4.3.6.jar:4.3.6] 
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager$InternalConnectionFactory.<init>(PoolingHttpClientConnectionManager.java:494) [httpclient-4.3.6.jar:4.3.6] 
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:149) [httpclient-4.3.6.jar:4.3.6] 
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:138) [httpclient-4.3.6.jar:4.3.6] 
at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.<init>(PoolingHttpClientConnectionManager.java:114) [httpclient-4.3.6.jar:4.3.6] 
at org.apache.http.impl.client.HttpClientBuilder.build(HttpClientBuilder.java:726) [httpclient-4.3.6.jar:4.3.6] 
at org.apache.http.impl.client.HttpClients.createDefault(HttpClients.java:58) [httpclient-4.3.6.jar:4.3.6] 

ответ

1

Каждое сообщение на эту тему гласит, что это связано с конфликтом между различными версиями HttpComponents. В моем случае это был конфликт между версией, импортированной в мое приложение, и версией, поставляемой с Wildfly.

Чтобы обойти это, вам нужен файл под названием WEB-INF/JBoss развертывания-structure.xml со следующим:

<jboss-deployment-structure> 
<deployment> 
    <exclusions> 
     <module name="org.apache.httpcomponents" /> 
    </exclusions> 
</deployment> 

Это предотвратит wildfly загрузку старше версии и вмешиваться в вашу новую версию.

Для получения более подробной информации см. https://docs.jboss.org/author/display/WFLY8/Class+Loading+in+WildFly.

Смежные вопросы