2014-07-26 1 views
0

Eclipse 관련 작업에 3 개의 관련 Java 프로젝트가 있습니다. ClassCommon은 세 번째 프로젝트에서 필요한 패키지를 가져온 이후 프로젝트 1과 프로젝트 2에서 액세스 할 수 있다고 말합니다. 로컬 시스템의 동일한 jvm에서 프로젝트 1과 2를 실행하고 있습니다.두 Java 프로젝트 사이의 공통 변수 값을 런타임에 반영하지 않음

제 문제는 이것입니다. 나는 제 3 프로젝트의 'ClassCommon'클래스로 작성된 프로젝트 1 프로젝트 2 사이에 공통 변수와 메소드를 가지고 있습니다. 공통 변수는 공용 정적 변수로 선언됩니다. 그러나 공통 변수에 액세스하여 런타임에 project1 프로세스에서 값을 설정할 때 project2 프로세스는 여전히 초기화 된 첫 번째 값만 갖습니다. 한 프로젝트의 프로세스에서 공통 변수를 변경하면 다른 프로젝트의 프로세스에 반영되지 않습니다. 두 프로젝트의 변수에 ClassCommon.variable_name으로만 액세스하고 있습니다. 이 두 프로젝트가 공통 정적 변수의 사본을 어떻게 다른지? 스테핑으로 디버깅 할 때 project1과 project2 프로세스는 모두 동일한 클래스 메소드를 사용하지만 변수는 공용 정적이지만 자신의 값을 갖고 있습니다. 누군가이 문제에 대해 명확하게 설명 할 수 있습니까?

+0

동일한 JVM에서 서버와 클라이언트가 실행 중입니까? –

+0

동일한 JVM에서 실행되지 않는 경우 동일한 클래스 로더에서 실행되고 있습니까? –

+0

예 두 프로젝트가 동일한 시스템 및 동일한 JVM 클래스 로더에서 실행 중임 – CRM

답변

1

당신이 해결하는 문제 도움이되기를 바랍니다. 가장 일반적으로 클라이언트와 서버는 서로 다른 물리적 머신에서 실행되므로 서로 다른 Java VM에서 실행됩니다.

따라서 althoug는 동일한 클래스와 해당 통계 필드에 액세스하며 서로 다른 VM에서 실행되는 것처럼 둘 다 자체 런타임 인스턴스를 갖습니다. 클라이언트와 서버 프로젝트에서 동일한 값을 수정하려는 경우 일반적인 클라이언트/서버 통신을 통해 이러한 변경 사항을 다른 클라이언트/서버에 전파해야합니다. 다른 방법으로는 클라이언트와 서버 모두 정적 필드에 대해 자체 값을 유지하므로 시간이 지남에 따라 달라질 수 있습니다.

+0

내가 클라이언트와 서버를 말했지만 클라이언트는 GUI를 처리하고 서버는 실제 데이터베이스 서버에 연결하는 로컬 응용 프로그램 서버입니다. 배포시 클라이언트와 서버가 모두 동일한 시스템에서 실행됩니다. 혼란 스럽다면 프로젝트가 클라이언트와 서버와 같은 관계가 없다고 가정합니다. – CRM

0

모든 변수에 대해 공용 클래스에서 getter 및 setter를 생성 한 다음 해당 메소드를 통해 가져 오기 및 설정하십시오.

는 클라이언트와 서버를 구현하는 것으로,이

+0

이것이 도움이되지 않을 것이라고 확신합니다. 결국 그것은 다른 방법으로 필드의 값을 설정하는 것입니다. 클라이언트 - 서버 통신을 설정하지 않으면 상대방에 대한 변경 사항이 표시되지 않습니다. * 게터와 세터를 사용하면 변경되지 않습니다. * – fabian

+0

나는 그것을 시도했습니다. 여전히 값이 다릅니다.일반적인 getter setter 메소드를 사용하여 디버깅 할 때 클라이언트와 서버 프로세스 모두 공통 파일 및 공통 메소드를 실행하지만 공통 정적 변수의 값은 클라이언트와 서버에서 서로 다릅니다. – CRM

관련 문제