2008-11-07 4 views
5

나는 System.getProperty("os.name")과 관련하여 정말로 수수께끼 같은 무언가를 발견했습니다. a Java bug on the matterthe Java 5 release notes ("os.name"으로 검색)에 따르면 v5 릴리스 10에서 수정 된 초기 "longhorn"버전의 Java 버그가있었습니다.Vista 상자에있는 Java가 XP에 있다고보고하는 이유는 무엇입니까?

그러나 내 Vista SP1 상자에서는 - v5 릴리스 15 및 v6 릴리스 6 모두 사용 - System.getProperty("os.name")은 "Windows XP"를 반환합니다. 또한 System.getProperty("os.version")은 "5.1"을 반환합니다. 그래도 Google을 통해이 문제와 관련된 것을 찾을 수 없습니다. 이것은 내가 그것이 내 비스타 설치와 함께 이상한 것이 아닌지 궁금하게 만든다. 테스트 C 프로그램에서 GetVersionEx() API 함수를 호출 해 보았습니다. 그리고 메이저 버전 6, 부 0 (Vista 설치를 기대합니다)을 반환합니다.

다른 누구도이 문제가 발생했거나 수정 사항을 알고 있습니까? 아니면 JNI를 사용하지 않고도 문제를 해결할 수있는 방법을 제안 했습니까?

+0

이렇게하면 Google 제품이 잘못된 값을 반환하는 이유를 분류하는 데 도움이되었습니다. 6u14에서 수정 된 자바 버그 ... 너무 나쁘다. 6u13 = D – GreenKiwi

답변

10

Java가 XP 호환 모드로 실행될 수 있습니다. 이 경우, Vista는 Windows 버전 번호를 위조하여 Java가 XP에서 실행된다고 믿게 만듭니다. 실행 파일의 호환성 탭을 확인하십시오.

+0

당신은 천재입니다! :) Vista의 자동 스크롤 기능으로 이클립스를 거의 사용할 수 없도록 만들었 기 때문에 호환성 모드에서 Eclipse를 실행하고있었습니다. 결과적으로 Eclipse에서 실행 한 Java 코드도 호환성 모드에서 실행하고있었습니다. 비스타가 호환 모드가 해제 되어도 문제가 없다고보고합니다 : D –

0

Windows 2000의 실제 Windows 버전 번호는 5.0입니다. Windows XP는 5.1입니다. Vista는 아마 6.0이므로 테스트 프로그램이 제대로 작동하고 있습니다. 자바가 분명히 잘못 이해하고있는 것처럼 들린다.

정답을 얻으려면 JNI에 의존해야 할 수도 있습니다. 나는 당신이 XP 나 Vista 중 어떤 것을 사용하는지에 따라 프로그램의 동작을 다양 화해야하는 이유에 대해 이미 자문 해왔다고 가정합니다.

+0

왜 행동을 바꿔야하는지에 대한 해답은 간단하다 : symlinks. 그들은 XP가 아닌 Vista에 존재합니다.) –

+0

Martin의 대답을 확인하십시오. 정말 좋습니다! –

관련 문제