Проверить операционную систему java

Как программно определить операционную систему на Java?

Я хотел бы определить операционную систему хоста, что моя программа Java работает программно (например: я хотел бы иметь возможность загружать разные свойства на основе того, нахожусь ли я на платформе Windows или Unix). Каков самый безопасный способ сделать это со 100% -ной надежностью?

18 ответов

Все, что он делает, это распечатать все свойства, предоставляемые вашими реализациями Java. Это даст вам представление о том, что вы можете узнать о своей среде Java через свойства.: -)

Как указано в других ответах, System.getProperty предоставляет необработанные данные. Однако компонент Apache Commons Lang предоставляет оболочку для java.lang.System с удобными свойствами, такими как SystemUtils.IS_OS_WINDOWS, как и вышеупомянутая ОС Swingx.

Я бы рекомендовал кэшировать его в статической переменной:

public static final class OsUtils < private static String OS = null; public static String getOsName() < if(OS == null) < OS = System.getProperty("os.name"); >return OS; > public static boolean isWindows() < return getOsName().startsWith("Windows"); >public static boolean isUnix() // and so on > 

Таким образом, каждый раз, когда вы запрашиваете Os, вы не получаете свойство более одного раза в течение срока действия вашего приложения.

Февраль 2016: 7+ лет спустя:

Существует ошибка с Windows 10 (которая не существовала во время первоначального ответа).
См. «Java «os.name» для Windows 10?

Я согласен с функцией getOSName, на основе OAOO (один раз и только один раз); однако, кеширование полностью избыточно, учитывая скорость поиска хешей.

Полностью избыточный может быть немного резким, поиск хеша дороже, чем доступ к ссылке. Все зависит от контекста.

Я перечитал этот ответ. Если вы собираетесь кэшировать, isWindows значения isWindows , isUnix и т. Д. Таким образом, вы также экономите время сравнения строк.

Читайте также:  Css v34 energy public мониторинг

@ ChrisJester-Young Я согласен (я не запомнил этот ответ старше 6,5 лет). Не могли бы вы отредактировать его соответственно?

@ Брайан Правда. Я соответственно отредактировал этот очень старый ответ, чтобы сослаться на более новый.

Во времена Windows 10 вы можете себе представить, почему это было плохой практикой. Пожалуйста, не надо, if(getOsName().startsWith(«Windows 9»)) < /* 95 and 98 */ >else < >

некоторые из ссылок в вышеприведенных ответах кажутся нарушенными. Я добавил указатели на текущий исходный код в приведенном ниже коде и предлагаю подход для обработки проверки с перечислением в качестве ответа, чтобы оператор switch мог использоваться при оценке результата:

OsCheck.OSType ostype=OsCheck.getOperatingSystemType(); switch (ostype)
/** * helper class to check the operating system this Java VM runs in * * please keep the notes below as a pseudo-license * * http://stackoverflow.com/questions/228477/how-do-i-programmatically-determine-operating-system-in-java * compare to http://svn.terracotta.org/svn/tc/dso/tags/2.6.4/code/base/common/src/com/tc/util/runtime/Os.java * http://www.docjar.com/html/api/org/apache/commons/lang/SystemUtils.java.html */ import java.util.Locale; public static final class OsCheck < /** * types of Operating Systems */ public enum OSType < Windows, MacOS, Linux, Other >; // cached result of OS detection protected static OSType detectedOS; /** * detect the operating system from the os.name System property and cache * the result * * @returns - the operating system detected */ public static OSType getOperatingSystemType() < if (detectedOS == null) < String OS = System.getProperty("os.name", "generic").toLowerCase(Locale.ENGLISH); if ((OS.indexOf("mac") >= 0) || (OS.indexOf("darwin") >= 0)) < detectedOS = OSType.MacOS; >else if (OS.indexOf("win") >= 0) < detectedOS = OSType.Windows; >else if (OS.indexOf("nux") >= 0) < detectedOS = OSType.Linux; >else < detectedOS = OSType.Other; >> return detectedOS; > > 

(OS.indexOf («darwin»)> = 0) никогда не может быть истинным, потому что это происходит после (OS.indexOf («win»)> = 0)

Источник

How to detect OS in Java

detect os

This article shows a handy Java class that uses System.getProperty(«os.name») to detect which type of operating system (OS) you are using now.

1. Detect OS (Original Version)

This code can detect Windows , Mac , Unix , and Solaris .

 package com.mkyong.system; public class OSValidator < private static String OS = System.getProperty("os.name").toLowerCase(); public static void main(String[] args) < System.out.println("os.name: " + OS); if (isWindows()) < System.out.println("This is Windows"); >else if (isMac()) < System.out.println("This is Mac"); >else if (isUnix()) < System.out.println("This is Unix or Linux"); >else if (isSolaris()) < System.out.println("This is Solaris"); >else < System.out.println("Your OS is not support!!"); >> public static boolean isWindows() < return (OS.indexOf("win") >= 0); > public static boolean isMac() < return (OS.indexOf("mac") >= 0); > public static boolean isUnix() < return (OS.indexOf("nix") >= 0 || OS.indexOf("nux") >= 0 || OS.indexOf("aix") > 0); > public static boolean isSolaris() < return (OS.indexOf("sunos") >= 0); > > 
 os.name: windows 10 This is Windows 

2. Detect OS (Enhanced Version)

Since the operating system will remain the same for the running Java app, we can increase the performance by moving the OS checking to static fields; The static ensures the OS.indexOf checking runs once only.

 package com.mkyong.system; public class OSValidator < private static String OS = System.getProperty("os.name").toLowerCase(); public static boolean IS_WINDOWS = (OS.indexOf("win") >= 0); public static boolean IS_MAC = (OS.indexOf("mac") >= 0); public static boolean IS_UNIX = (OS.indexOf("nix") >= 0 || OS.indexOf("nux") >= 0 || OS.indexOf("aix") > 0); public static boolean IS_SOLARIS = (OS.indexOf("sunos") >= 0); public static void main(String[] args) < System.out.println("os.name: " + OS); if (IS_WINDOWS) < System.out.println("This is Windows"); >else if (IS_MAC) < System.out.println("This is Mac"); >else if (IS_UNIX) < System.out.println("This is Unix or Linux"); >else if (IS_SOLARIS) < System.out.println("This is Solaris"); >else < System.out.println("Your OS is not support!!"); >> > 

Источник

Читайте также:  Java set output to file

Как определить ОС с помощью Java

Есть несколько способов выяснить, на какой ОС работает наш код.

В этой краткой статье мы увидим, как сосредоточиться на обнаружении ОС в Java.

2. Реализация

Один из способов — использовать System . getProperty(os.name) для получения имени операционной системы.

Второй способ — использовать SystemUtils из Apache Commons Lang API.

Давайте посмотрим на них обоих в действии.

2.1. Использование свойств системы

Мы можем использовать класс System для определения ОС.

 public String getOperatingSystem()    String os = System.getProperty("os.name");   // System.out.println("Using System Property: " + os);   return os;   > 

2.2. SystemUtils — язык Apache Commons

SystemUtils от Apache Commons Lang — еще один популярный вариант, который стоит попробовать. Это хороший API, который изящно заботится о таких деталях.

Узнаем ОС с помощью SystemUtils:

 public String getOperatingSystemSystemUtils()    String os = SystemUtils.OS_NAME;   // System.out.println("Using SystemUtils: " + os);   return os;   > 

3. Результат

Выполнение кода в нашей среде дает нам тот же результат:

Using SystemUtils: Windows 10 Using System Property: Windows 10 

4. Вывод

В этой быстрой статье мы увидели, как мы можем программно найти/обнаружить ОС из Java.

Как всегда, примеры кода для этой статьи доступны на GitHub .

Источник

Как определить ОС с помощью Java

Есть несколько способов выяснить ОС, на которой работает наш код.

В этой краткой статье мы увидим, как сосредоточиться на обнаружении ОС в Java.

2. Реализация

Один из способов — использоватьSystem.getProperty(os.name) для получения имени операционной системы.

Второй способ — использоватьSystemUtils из APIApache Commons Lang.

Давайте посмотрим на них обоих в действии.

2.1. Использование системных свойств

Мы можем использовать классSystem для обнаружения ОС.

public String getOperatingSystem() < String os = System.getProperty("os.name"); // System.out.println("Using System Property: " + os); return os; >

2.2. SystemUtils — язык Apache Commons

SystemUtils от Apache Commons Lang — еще один популярный вариант. Это хороший API, который изящно заботится о таких деталях.

Давайте узнаем ОС с помощьюSystemUtils:

public String getOperatingSystemSystemUtils() < String os = SystemUtils.OS_NAME; // System.out.println("Using SystemUtils: " + os); return os; >

3. Результат

Выполнение кода в нашей среде дает нам тот же результат:

Using SystemUtils: Windows 10 Using System Property: Windows 10

4. Заключение

В этой быстрой статье мы увидели, как мы можем находить / обнаруживать ОС программно, с Java.

Как всегда, доступны примеры кода для этой статьиover on GitHub.

Источник

Оцените статью