[SPRING] java.lang.NoSuchFieldError : INSTANCE
SPRINGjava.lang.NoSuchFieldError : INSTANCE
StormSubmitter를 통해 내 토폴로지를 제출하려고 할 때,
Caused by: java.lang.NoSuchFieldError: INSTANCE
at org.apache.http.impl.io.DefaultHttpRequestWriterFactory.<init>(DefaultHttpRequestWriterFactory.java:52)
나는 봄을 사용하고있다.
Spout / Bolt 생성자에서 HttpClient를 초기화하지 않습니다. 대신에 Spring 컨텍스트에서 가져온 클래스의 생성자에서 초기화 된 () bolt의 prepare () 메소드
코드는 다음과 같이 구성됩니다.
SomeBolt.java
@Component
public class SomeBolt extends BaseRichBolt {
private OutputCollector _collector;
private SomeClient someClient;
@Override
public void prepare(Map conf, TopologyContext context, OutputCollector collector) {
_collector = collector;
someClient = AppContext.getBean(SomeClient.class);
}
}
SomeClient.java
@Component
public class SomeClient {
private final CloseableHttpClient httpClient;
public SomeClient() {
this.httpClient = (httpClient == null ? HttpClients.createDefault() : httpClient);
}
}
AppContext.java
@Component
public class AppContext implements ApplicationContextAware {
private static ApplicationContext applicationContext;
@Override
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
AppContext.applicationContext = applicationContext;
}
public static <T> T getBean(Class<T> c) {
return applicationContext.getBean(c);
}
}
해결법
-
==============================
1.이것은 아마도 종속성 문제 일 것입니다.
이것은 아마도 종속성 문제 일 것입니다.
매우 명확하지 않은 오류 메시지이지만 다음과 비슷한 것을 발견했습니다. NoSuchFieldError 인스턴스를 최대 절전 모드로 유지하지만 Struts 1에서만 사용할 수 있습니까?
-
==============================
2.나는 비슷한 문제에 직면했다. 클래스 경로에 두 개의 jar 파일에 동일한 클래스 인 httpcore-4.3과 apache-httpcomponents-httpcore가있다. 클래스 경로에서 apache-httpcomponents-httpcore를 제거했다.
나는 비슷한 문제에 직면했다. 클래스 경로에 두 개의 jar 파일에 동일한 클래스 인 httpcore-4.3과 apache-httpcomponents-httpcore가있다. 클래스 경로에서 apache-httpcomponents-httpcore를 제거했다.
-
==============================
3.가혹한 것은 폭풍우의 길에서 옳습니다.
가혹한 것은 폭풍우의 길에서 옳습니다.
그래서 내가이 작업을하기 위해 한 것은 폭풍과 함께 제공되는 httpclient와 httpcore를 제거하고 새로운 버전 4.3.3과 4.3.2로 각각 대체했습니다. 이것은 작업 / 비 활동가 / 감독자가 시작하는 데 사용하는 클래스 경로를 변경합니다. storm classpath를 실행하면 클래스 경로가 출력됩니다.
[nimbus ~]$ storm classpath ...../storm-0.8.2/lib/httpclient-4.3.3.jar:..../storm-0.8.2/lib/httpcore-4.3.2.jar.....
나는 이것이 주위에 아주 좋은 일이라고 확신하지 못한다. 폭풍의 어떤 부분이이 항아리를 사용하는지 모르겠다.
파이썬 폭풍 코드를 보면 폭풍우의 뿌리와 폭풍 / lib에 모든 항아리를 넣을 것입니다.
def get_classpath(extrajars): ret = get_jars_full(STORM_DIR) ret.extend(get_jars_full(STORM_DIR + "/lib")) ret.extend(extrajars) return normclasspath(":".join(ret))
-
==============================
4.나는 플러그인 폴더 안의 경로에 아래 jar 파일을 가지고 있었다. ./var/lib/jenkins/plugins/build-pipeline-plugin/WEB-INF/lib/httpcore-4.2.1.jar ./var/lib/jenkins/plugins/git-client/WEB-INF/lib/httpcore-4.3.2.jar ./var/lib/jenkins/plugins/maven-plugin/WEB-INF/lib/httpcore-4.2.4.jar
나는 플러그인 폴더 안의 경로에 아래 jar 파일을 가지고 있었다. ./var/lib/jenkins/plugins/build-pipeline-plugin/WEB-INF/lib/httpcore-4.2.1.jar ./var/lib/jenkins/plugins/git-client/WEB-INF/lib/httpcore-4.3.2.jar ./var/lib/jenkins/plugins/maven-plugin/WEB-INF/lib/httpcore-4.2.4.jar
후에, 나는 아래 파일을 제거했다, 그것은 나를 위해 일했다. /var/lib/jenkins/plugins/build-pipeline-plugin/WEB-INF/lib/httpcore-4.2.1.jar
from https://stackoverflow.com/questions/21622885/java-lang-nosuchfielderror-instance by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] HttpRequest 및 HttpResponse를 파일에 기록하는 방법? (0) | 2018.12.16 |
---|---|
[SPRING] 스프링 보안 세션을 무효화할 수 있습니까? (0) | 2018.12.15 |
[SPRING] 최대 절전 모드, Java 9 및 SystemException (0) | 2018.12.15 |
[SPRING] 새로운 Spring UriComponentsBuilder를 사용한 URL 인코딩 (0) | 2018.12.15 |
[SPRING] Weblogic 10.3.5 Spring 버전 무시 (0) | 2018.12.15 |