9

最近、新しいマシン 64 ビット Windows 7 に引っ越しました。しかし、このコードを実行すると、間違った OS 名が表示されます。

String osName = System.getProperty("os.name");
System.out.println("OS Name = " + osName);

出力は次のとおりです。

OS Name = Windows Vista

私のコードまたはシステムの何が問題なのですか?

前もって感謝します。

4

6 に答える 6

12

古いバージョンの Java を使用している可能性があります。これは既知のバグ (bug_id=6819886) であり、新しいバージョンで修正されています。 詳細については、こちらをお読みください


Java バージョンをアップグレードできない場合に考えられる回避策:

String osName = System.getProperty("os.name");
    if (osName.equals("Windows XP") || osName.equals("Windows Vista"))
    {
       //do something and remember to put in all the names in the above if list. I just added two for example,it will have to include all like Windows NT,ME,95,etc.
    }
    else
    {
        //the block that will be accessible for Windows 7
    }
于 2012-05-30T06:05:28.680 に答える
4

これに関して報告されたバグがあります:

http://bugs.sun.com/view_bug.do?bug_id=6819886

私はJava 7を持っていないので、Javaの新しいバージョンで修正されているかどうかはわかりません.

于 2012-05-30T06:10:39.100 に答える
3

それは私の Windows 7 マシン (確かに 32 ビットのマシンです。現在、64 ビットのマシンにはアクセスできません) で動作します。

おそらく、あなたの JRE は Windows 7 よりも前のもので、その名前はそれに組み込まれていますか? どのバージョンの JRE を使用していますか? 最新バージョンにアップデートして、もう一度試すことをお勧めします。確かに、JRE に OS 名がハードコードされているとしたら、かなり厄介なことですが、もっと奇妙なことが起こっています。

于 2012-05-30T06:02:54.453 に答える
2

JAVA-6 を使用してください。問題なく動作することを試しました。それ以外の場合、Windows は Vista モードを使用して JVM を処理しています。

于 2012-05-30T06:16:39.033 に答える
1

最近同じ問題に遭遇しました。バグ 6819886評価ノートに記載されているように、os.version プロパティをチェックして、この場合Windows 7Windows Vistaを区別できます。

Windows 7 のバージョンは 6.1、Windows Vista のバージョンは 6 です。

String osVersion = System.getProperty("os.version");  
if("6.1".equals(osVersion)){
    System.out.println("OS is Windows 7");
}

これにより、これを機能させるためだけに最新の Java にアップグレードする必要がなくなります。

于 2013-09-17T10:04:05.723 に答える