6

Java から、動作している OS の名前を取得しました。以下のコードを参照してください。

System.out.println(System.getProperty("os.name"));

Windows XP では、次のように出力されます。Windows XP

しかし、ubuntu/fedora では、Linux.

Javaコードを使用して、私が使用しているLinuxバージョン(ubuntuやfedoraなど)を見つけるのを手伝ってくれる人はいますか? Java から Linux ディストリビューションを見つけることは可能ですか?

4

4 に答える 4

5

このコードは次のことに役立ちます。

String[] cmd = {
"/bin/sh", "-c", "cat /etc/*-release" };

try {
    Process p = Runtime.getRuntime().exec(cmd);
    BufferedReader bri = new BufferedReader(new InputStreamReader(
            p.getInputStream()));

    String line = "";
    while ((line = bri.readLine()) != null) {
        System.out.println(line);
    }
} catch (IOException e) {

    e.printStackTrace();
}

アップデート

バージョンのみが必要な場合は、 uname -a を試してください

アップデート

一部の Linux ディストリビューションでは、/proc/version ファイルにディストリビューション バージョンが含まれています。SO コマンドを呼び出さずに Java からすべてを出力する例を次に示します。

//lists all the files ending with -release in the etc folder
File dir = new File("/etc/");
File fileList[] = new File[0];
if(dir.exists()){
    fileList =  dir.listFiles(new FilenameFilter() {
        public boolean accept(File dir, String filename) {
            return filename.endsWith("-release");
        }
    });
}
//looks for the version file (not all linux distros)
File fileVersion = new File("/proc/version");
if(fileVersion.exists()){
    fileList = Arrays.copyOf(fileList,fileList.length+1);
    fileList[fileList.length-1] = fileVersion;
}       
//prints all the version-related files
for (File f : fileList) {
    try {
        BufferedReader myReader = new BufferedReader(new FileReader(f));
        String strLine = null;
        while ((strLine = myReader.readLine()) != null) {
            System.out.println(strLine);
        }
        myReader.close();
    } catch (Exception e) {
        System.err.println("Error: " + e.getMessage());
    }
}
于 2013-02-22T07:00:34.663 に答える
0

java を使用して を実行しuname -r、結果を取得できます。地下室でソースから誰かがコンパイルしたものでない限り、通常、ディストリビューションが明らかになります。私のマシンの場合:

mao@korhal ~ $ uname -r
3.4.9-gentoo

そしてそれを実行するには:

Process p = Runtime.getRuntime().exec("uname -r");  
BufferedReader in = new BufferedReader(  
                    new InputStreamReader(p.getInputStream()));  
String distro = in.readLine();  

// Do something with distro and close reader

編集:おそらくuname -a、一般的なディストリビューションではここでうまくいくでしょう。または/etc/*-release、ほとんどの将軍で一般的に定義されているように見えるファイルを見てください。

于 2013-02-22T07:08:39.400 に答える
0

Linux ディストリビューション名を取得するアドホックな方法の 1 つは、/etc/*-releaseファイルの内容を読み取ることです。のようなものが得られますCentOS release 6.3 (Final)

このファイルの内容を Java から読み取るのは簡単です。

最善の方法ではないかもしれませんが、これで仕事は完了します。また、これは *nix ボックスでのみ機能し、Windows では機能しません。

于 2013-02-22T06:59:38.357 に答える