2012-01-16 6 views
0

2 libs : owls.jarenvy.jar이 있습니다. 그들은 lib jena.jar에 의존하지만 두 개의 differnet, incompitables 버전. 이전 버전을 사용하는시기 - jena.jar, 올빼미 새 - 내가 글래스 피쉬 - 3.0.1에서 실행되는 웹 응용 프로그램에서 togever을 사용할 jena2.jar . 내 웹 응용 프로그램을 배포 할 때 IDEA 11을 사용하고 있습니다.다른 버전의 동일한 라이브러리 사용

나는이 같은 디렉토리 트리 :

  • 웹 애플리케이션/WEB-INF/lib 디렉토리/envy.jar
  • 웹 애플리케이션/WEB-INF/lib 디렉토리/owls.jar
  • 웹 애플리케이션/lib 디렉토리 /시기 /jena.jar
  • 웹 애플리케이션/lib 디렉토리/올빼미/jena2.jar

내가 MANIFEST.MF 선망의에 추가하고이 같은 libs와 클래스 경로 올빼미 : 클래스 옵션을 선택하고 난 항상 jena.jar .If 난`에서로드 된 클래스를 얻을 : ../../lib/envy/jena.jar

나는 -verbose를 사용 사용하거나 사용하지 않고 envy.jar 전혀, 나는 항상 클래스를로드 jena.jar에서 가져옵니다. 내가 jena2.jar에서 다음 envy.jar 클래스 부하를 삭제하는 경우에만

이 libs가 모두 사용할 수있는 방법이있는가요?

답변

0

동일한 클래스의 2 가지 버전을 사용하는 유일한 방법은 2 개의 다른 클래스 로더를 통해 그들을 laod하는 것입니다. 즉, owls.jar__ 및 __jena.jar을 하나의 클래스 로더로로드하고 envy.jarjena2.jar을로드해야합니다. 이 솔루션에는 자체적 인 함정이 있습니다. 필요할 때 다른 클래스 로더를 사용할 수있는 올바른 사용자 정의 코드가 있어야합니다. 아마도 자신 만의 클래스 로더를 작성하게 될 것입니다.

내가 아는 한 그런 상황에 대한 해결책은 없습니다. 아마도 이전 버전의 jar 파일을 사용하는 것이 더 쉽습니다. jena.jar 같은 버전을 지원할 수 있습니다. 훨씬 쉬운 방법입니다.

+0

몇 가지 예를 들려 줄 수 있습니까? 클래스를로드 한 다음 리플렉션을 사용하여 액세스하는 방법 만 알고 있지만 일부 3dparty 라이브러리의 클래스를로드하는 방법을 알지 못합니다. ** owls ** 클래스를로드하는 방법을 알고 있지만 ** owls ** lib 용 ** jena2 ** 클래스를로드하는 방법은 무엇입니까? – kornero

+0

불행히도, ** jena **의 새 버전을 사용하는 라이브러리를 사용해야합니다. 또한 ** jena **의 구버전을 사용하는 또 다른 라이브러리가 필요하며 더 이상의 업데이트가 없을 것입니다. 그래서 내가 이해할 수있는 방법이 없습니다. 아니면 내 자신의 클래스 로더로 할 수 있을까? 그렇다면, 내가 그것에 대해 읽을 수있는 무엇인가를 알고있을 것입니다 (3dparty 라이브러리 용 클래스를로드하는 방법)? – kornero

관련 문제