2013-07-01 3 views
0

내 프로젝트에서 우리는 많은 의존성 .jar 파일을 참조하고 있습니다.자바 빌드 경로의 잘못된 jar 파일 참조하기

는 /lib/abc.jar

/lib/xxx.jar xxx.jar 파일은 일부 (com.search.hit) 패키지를 가지고. 동일한 패키지를 abc.jar 파일에서 사용할 수 있습니다. 그러나 이제는 문제가 생겨서 xxx.jar 파일에 액세스하면 패키지 (com.search.hit)를 참조하지 않고 대신 abc.jar 패키지를 참조합니다.

아무도 흐름을 리디렉션하는 방법을 말할 수 있습니까?.

미리 감사드립니다.

+0

동일한 클래스의 소스가 여러 개있는 근본적인 문제를 해결해야합니다. 이것은 항상 오류를 가져올 것입니다. –

+0

클래스 경로를 다시 정렬 할 수 있습니까? 위의 문제를 해결할 것입니다.? – sanjay

+0

아니요, 그렇지 않습니다. 하나의 특정 클래스를 포함하는 즉각적인 문제를 해결할 수는 있지만 다른 클래스와 함께 다시 돌아올 수 있습니다. 클래스 패스를 원래의 순서로 되돌리려면 ... 이제 그 그림을 얻으십시오. –

답변

0

classpath에서 첫 번째로 오는 jar의 클래스가 사용되는 클래스입니다. 다른 하나는 클래스 로더에 관한 한 존재하지 않을 수도 있습니다. 이와 같은 갈등을 피하는 것이 좋습니다.

0

Eclipse에서 프로젝트 빌드 경로 구성으로 이동하여 라이브러리 탭을 클릭하십시오. 그런 다음 목록에서 액세스하지 않으려는 패키지를 제거하고 다시 추가하십시오.

이렇게하면 우선 순위 목록에서 패키지의 우선 순위가 낮아지고 방금 다시 추가 한 패키지보다 먼저 다른 패키지가 선택됩니다.

0

이렇게하면 문제가 발생합니다. 내 제안은 이러한 jar 파일에 대한 getter 및 setter 래퍼를 작성하기위한 2 개의 추가 클래스를 작성하는 것입니다. 2 개의 별도 클래스를 작성하십시오. 각각의 클래스는 하나만 참조하며 프로젝트 파일은 이러한 래퍼 클래스를 사용하여 이러한 jar의 함수를 호출합니다. 그렇게 쉽게 쉬울 것입니다.

0

단일 JVM에서 동일한 패키지로 동일한 파일 이름이 될 수없는 패키지 이름을 변경해야합니다. JVM은 클래스 로더를 사용하여 하나의 jar 클래스를 무작위로로드하고 나머지는 무시합니다.