복붙노트

[SPRING] Spring java.lang.LinkageError : 로더 제약 위반 : 이전에 로더가 이름 X로 다른 유형으로로드하기 시작했습니다.

SPRING

Spring java.lang.LinkageError : 로더 제약 위반 : 이전에 로더가 이름 X로 다른 유형으로로드하기 시작했습니다.

나는 Spring을 처음 사용하고 Spring 3.2.2를 사용한다. 나는 잘 작동하는 를 통해 주입 한 콩을 가지고있다. 이제는 @Autowired를 통해 콩을 주입하고 싶었습니다. 나는 이것을했다 :

beans.xml :

<context:annotation-config />
<bean id="formulaFactory" class="my.project.formula.impl.GenericFormulaFactory"
    factory-method="getInstance">
<qualifier value="formulaFactory"></qualifier>
</bean>

자바 소스 :

@Autowired
@Qualifier("formulaFactory")
private FormulaFactory formulaFactory;

(예선 변경이나 나가기는 아무런 효과가 없었습니다 ...)

그리고 나는이 오류를 얻는다.

java.lang.LinkageError : 로더 제약 조건 위반 : 로더 (org / springframework / context / support / ContextTypeMatchClassLoader $ ContextOverridingClassLoader의 인스턴스) 이전에 "my / project / formula / FormulaKey"라는 이름의 다른 유형으로 로딩을 시작했습니다.

이 오류가 왜 발생하는지 궁금합니다. 특히 FormulaKey 유형은 나를 자극합니다. @Autowired 어노테이션을 다른 bean과 함께 사용하면 작동합니다.

getInstance 메소드를 통해 Singleton으로 GenericFormulaFactory를 구현했다는 것을 언급해야합니다. 어쩌면 그게 어떤 문제를 일으킬 수 있을까요?

응용 프로그램은 독립 실행 형 응용 프로그램입니다. 나는 모든 항아리들을 이중성에 대해서도 점검했고, 이것이 내 자신의 클래스들과 관련되어 있기 때문에 이것이 문제의 원인이라고 생각하지 않는다.

문안 인사, 올리버

최신 정보: 원인을 모른 채 오류를 제거했습니다.

제가 한:

이제 xml을 사용하여 구현을 구성하고 @Autowired 주석과 함께 사용할 수 있습니다.

xml :

<bean id="formulaHandler" class="my.project.formula.impl.DefaultFormulaHandler">
    <constructor-arg ref="formulaFactory" />
</bean>
<bean id="formulaFactory" class="my.project.formula.impl.GenericFormulaFactory" />

왜 처음에는 오류가 발생했는지 궁금합니다. 팩토리 구현에서 FormulaKey를 키로 사용하여 HashMap을 만들었으므로 이로 인해 문제가 발생할 수 있습니다. 누군가가 대답을 알고 있다면 나는 그것을 정말로 알고 싶다.

해결법

  1. ==============================

    1.지금까지 내가 수집 할 수있는 것은 다음과 같다.

    지금까지 내가 수집 할 수있는 것은 다음과 같다.

  2. from https://stackoverflow.com/questions/18127431/spring-java-lang-linkageerror-loader-constraint-violation-loader-previously-in by cc-by-sa and MIT license