내 의존성과 충돌하는 내장 된 종속성이있는 jarX를 사용하고 있으므로 클래스 로더를 작성하여 기본 클래스 로더에서 jarX의 종속성을 분리합니다.jar (클래스 아이덴티티 위기)를 분리하기위한 클래스 로더
jarX는 내 응용 프로그램의 클래스 경로를 벗어 났지만 jarX의 클래스를 사용하는 클래스는 클래스 경로에 있으므로 사용자 정의 클래스 로더를 통해 클래스를 인스턴스화 할 때 ClassCastException 형태의 클래스 ID를 JVM 내 클래스의 버전은 내 사용자 정의 클래스 로더에 의해로드 된 버전과 다른 것으로 간주됩니다.
this blog post 나는이 문제를 해결하는 것으로 보이는 반사를 통해 클래스로드 된 사용자 지정 클래스와 상호 작용함으로써 비슷한 문제를 해결했습니다.
단지 이것보다 쉬워야한다고 생각합니다. 누구든지이 문제를 해결할 더 좋은 방법을 알고 있습니까?
현재 제가 생각할 수있는 가장 간단한 해결책은 jarX에서 요구하는 것과 동일한 버전의 필수 라이브러리를 사용하는 것입니다. 그러나 이는 특정 정책으로 인해 항상 가능한 것은 아닙니다. maven을 가지고 있다면 (jarX에서 필요로하는 특정 라이브러리를 제외하도록 지정하여 간섭 라이브러리를 사용할 수도 있습니다. 그러나 이것은 두 jar가 동일한 공통 인터페이스를 사용하는 경우에만 가능합니다. –
문제는 임베디드되고 불완전한 (사용되지 않은 메소드가 누락되었습니다.) 문제가있는 클래스를 제거 할 수있게 해주지 만 그 솔루션은 내가 게으르다는 이유 때문에 부적절한 것으로 여겨지므로 여기에 깨졌습니다 classloader :) – h0zer
당신은 어느 항아리가 충돌하고 전체 스택 추적을 게시했는지, 어떤 서버를 사용하고 있습니까? –