Какие источники java для заполнения системных свойств

Через System.getProperty (строковый ключ) вы можете получить значение некоторых свойств системы java, однако мой вопрос касается того, как java заполняет эти значения, точнее, где находится источник этой информации. Я искал в некоторых местах, таких как здесь, но я не т нашел ответ.

Моя проблема в том, что я пытаюсь проверить некоторые варианты поведения своего кода и хочу изменить системное свойство для значения os.name за пределами java (я знаю, что могу установить значение с помощью System.setProperty(String key, String value) однако я хочу сделать это снаружи), так что кто-нибудь знает, что я должен изменить, чтобы получить новое значение через System.getProperty('os.name')?

Спасибо!


person albciff    schedule 20.01.2015    source источник
comment
Вы пытались запустить java -Dos.name="Moon OS" ? (не уверен, что вы можете изменить нестандартные свойства таким образом)   -  person assylias    schedule 20.01.2015
comment
Спасибо, ребята, я знаю, что этого можно добиться с помощью -Dos.name, однако я искал другой способ сделать это вне Java, извините, если это не совсем понятно в моем вопросе.   -  person albciff    schedule 20.01.2015
comment
что ты имеешь в виду? Он использует аргументы командной строки JVM, поэтому он находится за пределами java ... Если вы не имели в виду изменение вашей фактической ОС таким образом, чтобы JVM автоматически вводила другое значение для os.name? В этом случае ответ, вероятно, будет варьироваться в зависимости от ОС...   -  person assylias    schedule 20.01.2015
comment
@assylias, как вы сказали: I mean changing my actual OS in a way that the JVM will automatically feed a different value for os.name, прошу прощения, если это не совсем понятно в моем вопросе, извините :(. Однако, как отмечает @ElliottFirsch в своем ответе, нет простого способа сделать это, не так ли? Спасибо.   -  person albciff    schedule 20.01.2015


Ответы (3)


Я не думаю, что вам следует изменять встроенные системные свойства, связанный учебник по Java говорит (частично)

Класс System поддерживает объект Properties, описывающий конфигурацию текущей рабочей среды.

а также

Предупреждение. Изменение свойств системы потенциально опасно и должно осуществляться с осторожностью. Многие системные свойства не перечитываются после запуска и носят ознакомительный характер. Изменение некоторых свойств может иметь неожиданные побочные эффекты.

в конце концов

Чтобы изменить существующий набор системных свойств, используйте System.setProperties. Этот метод принимает объект Properties, который был инициализирован, чтобы содержать устанавливаемые свойства.

person Elliott Frisch    schedule 20.01.2015
comment
да, я знаю, что это потенциально опасно, но я хочу только провести некоторые тесты, и, как я комментирую в своем ответе, я могу использовать setProperty, однако я искал другой способ, и, как вы сказали, кажется, что нет другого варианта (кроме использования -Dos.name однако это не тот путь, который я искал). Спасибо. - person albciff; 20.01.2015
comment
Используйте System.setProperties, а не setProperty. - person Elliott Frisch; 20.01.2015
comment
Я могу использовать оба нет? setProperty(String key, String value): docs.oracle.com/javase/7/docs/api/java/lang/ и setProperties(Properties props): docs.oracle.com/javase/7/docs/api/java/lang/ . Однако setProperty для установки только одной переменной мне кажется более удобным. - person albciff; 20.01.2015

Вы можете передать аргумент VM как

-Dos.name="Ubuntu 10.1"

Если вы используете Eclipse, вы можете указать значение через «Выполнить»> «Выполнить конфигурации...» Выберите свою программу, скажем, в приложении Java и укажите значение на вкладке «Аргументы».

person Ravi K Thapliyal    schedule 20.01.2015
comment
Да, я сделал это перед публикацией. Хотя в Эклипсе. - person Ravi K Thapliyal; 20.01.2015

Вы можете запустить java с параметром -Dos.name="XXX", поэтому System.getProperty('os.name') вернет «XXX».

person Jens    schedule 20.01.2015