java version "1.7.0_71"
Gradle 2.1
Здравствуйте,
UPDATE:
Зависимости
gradle dependencies | grep httpcore
| +--- org.apache.httpcomponents:httpcore:4.3.3
| +--- org.apache.httpcomponents:httpcore:4.3.3
| +--- org.apache.httpcomponents:httpcore:4.3.3
| +--- org.apache.httpcomponents:httpcore:4.3.3
| | | | | +--- org.apache.httpcomponents:httpcore:4.1 -> 4.3.3
| +--- org.apache.httpcomponents:httpcore:4.3.3
| | | | | +--- org.apache.httpcomponents:httpcore:4.1 -> 4.3.3
Означает ли это, что у меня есть 4.1, что является мягкой ссылкой на 4.3.3? Кажется странным, когда я распечатываю загрузку загрузчика классов, похоже, загружает 4.3.3: /home/steve/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents/httpcore/4.3.3/f91b7a4aadc5cf486df6e4634748d7dd7a73f06d/httpcore-4.3.3.jar
кажется очень странным.
Я продолжаю получать эту ошибку, когда я пытаюсь запустить свой HTTPClient. Все компилируется нормально.
java.lang.NoSuchFieldError: INSTANCE
at org.apache.http.impl.io.DefaultHttpRequestWriterFactory.<init>(DefaultHttpRequestWriterFactory.java:52
Мой код очень прост, удален не важный код, чтобы он был маленьким:
public class GenieClient {
private CloseableHttpClient mClient;
public GenieClient() {
ClassLoader classLoader = GenieClient.class.getClassLoader();
URL resource = classLoader.getResource("org/apache/http/message/BasicLineFormatter.class");
log.log(Level.INFO, "resource: " + resource);
mClient = HttpClientBuilder.create().build();
}
public int sendRequest() {
int responseCode = -1;
try {
HttpResponse response = mClient.execute(new HttpPost("http://www.google.com"));
responseCode = response.getStatusLine().getStatusCode();
}
catch(IOException ex) {
log.log(Level.SEVERE, "IOException: " + ex.getMessage());
}
return responseCode;
}
}
Вывод, который я получаю от classLoader, таков:
INFO: resource: jar:file:/home/steve/.gradle/caches/modules-2/files-2.1/org.apache.httpcomponents/httpcore/4.3.3/f91b7a4aadc5cf486df6e4634748d7dd7a73f06d/httpcore-4.3.3.jar!/org/apache/http/message/BasicLineFormatter.class
Я использую gradle в качестве моего инструмента построения и устанавливаю зависимости, подобные этому в файле build.gradle
:
dependencies {
compile 'org.apache.httpcomponents:httpclient:4.3.6'
}
Я также попытался включить следующий httpcore, но все равно получаю ту же ошибку:
compile 'org.apache.httpcomponents:httpcore:4.4'
Все строит нормально, только когда я запускаю свой httpClient,
Большое спасибо за любые предложения,