2012-01-12 6 views
0

모든 버전의 서버를 지원할 수있는 클라이언트를 개발해야합니다. 새 서버가 클라이언트를 사용하여 연결될 때마다 적절한 서버 정보가 클라이언트에 저장되고 클래스 pat h는 현재 서버 특정 클래스 경로 위치로 설정되어야합니다. 서버 버전 클래스 경로를 기반으로 설정해야합니다. 이 클래스 경로를 동적으로 설정해야합니다. 나는 항상 ClassNotFound 예외를 얻는다. 어떻게하면 좋을지 제안 해 주시겠습니까?동적으로 클래스 경로 설정

+1

자세한 내용을 알아보십시오. 이 새 서버가 다른 컴퓨터에 있습니까? 이것은 배포 문제처럼 보입니다. 배포에 무엇을 사용합니까? – fge

+0

RMI가 수행하는 작업 (네트워크를 통해 소프트웨어 버전 업데이트) 또는 Java WebStart를 수행하려고합니까? –

답변

0

런타임시 클래스 경로를 동적으로 설정할 수 없습니다. 여기서 두 가지 일을 할 수 있습니다 : OSGi에 익숙해 지거나 자신의 클래스 로더를 작성하십시오. 이 특정 예제의 경우 writwing 자신의 클래스 로더가 더 쉬울 것입니다. 서버 특정 클래스 경로에서 무엇을 유지합니까? 클래스, 리소스, 무엇? 일부 내용이 도움이 될 수 있습니다.

+0

서버 특정 클래스 경로에서 jar 파일은 해당 서버 버전에 특정한 등록 정보 파일입니다. – user1145302

+0

그래서 런타임시 jars에서 clasess를로드해야합니까? 여기에서 시도하십시오 http://stackoverflow.com/questions/60764/how-should-i-load-jars-dynamically-at-runtime –

0

정확히 무엇을 달성하려고하는지 모르지만 클라이언트 시스템에 필요한 모든 라이브러리가 있고 서버에서 수신 한 특정 매개 변수를 기반으로 런타임에 클래스 경로를 변경하려고한다고 가정합니다. , 그때 나는 ClassWorlds에 갈 것이다.

ClassWorlds 구성 파일을 사용하여 클래스 영역 세트를 정의하려고 시도했지만 클라이언트의 기본 클래스는 using the ClassWorld argument in the main method으로 구현됩니다. 그런 다음 서버에서 수신 한 매개 변수는 이러한 영역 중 하나의 이름이됩니다. 따라서 realm 매개 변수를 읽은 직후 특정 영역에 대해 ClassWorlds가 만든 객체에 switch the current thread's classloader이 필요합니다.