Есть ли параметр командной строки JVM для изменения каталога?

Короче говоря, я хочу знать, есть ли параметр командной строки JVM для изменения начального рабочего каталога? Если это важно, я запускаю jdk1.6.0_24.

Предыстория:

Я использую инструмент под названием Robolectric for Eclipse для тестирования приложений Android на хост-компьютере без эмуляции. Robolectric требует создания тестового проекта, но сами тесты должны запускаться из тестируемого проекта Android. Это достигается из Eclipse, устанавливая конфигурацию запуска для тестируемого проекта в настройке: «Выполнить все тесты в выбранном проекте, пакете или исходной папке».

Я хочу сделать это из параметров командной строки JVM, если это возможно, потому что другой инструмент, который я использую, Infinitest, не позволяет указать рабочий каталог тестов. Однако он позволяет указать параметры командной строки JVM.

Временное решение:

Пока я не нашел лучшего обходного пути, успешным kluge было копирование папки AndroidManifest.xml и res из проекта Android.


person Jeff Axelrod    schedule 20.10.2011    source источник


Ответы (3)


«Текущий рабочий каталог» — это концепция ОС, а не JVM, поэтому вам нужно будет найти решение на этом уровне, например, написать пакетный сценарий или сценарий оболочки.

person Ryan Stewart    schedule 20.10.2011
comment
Спасибо, но мне нужен параметр командной строки по причинам, указанным в справочной части моего вопроса. - person Jeff Axelrod; 20.10.2011
comment
Да, я видел. Я говорю, что вы не можете сделать это с аргументами JVM. - person Ryan Stewart; 21.10.2011
comment
Infinitest не позволяет вам вызывать сценарий оболочки, только для изменения флагов. - person Jeff Axelrod; 21.10.2011

В Java SE «текущий каталог» помещается в системное свойство user.dir.

Вручную переопределить это значение с помощью параметра -D может сработать:

java -Duser.dir=/some/directory ....

Но я не знаю, относится ли это также к JVM, используемому в Android.

person a_horse_with_no_name    schedule 20.10.2011
comment
Плохая идея. Все, что я когда-либо видел об этом, говорит, что не надо. В лучшем случае это ненадежно. Если, конечно, это не изменилось и в Android. Но это всего лишь набор тестов, верно? Не работает внутри Android? - person Ryan Stewart; 21.10.2011
comment
Я использую этот подход на регулярной основе, и он работает довольно хорошо. - person a_horse_with_no_name; 21.10.2011
comment
Изменение этой переменной не рекомендуется и ненадежно в соответствии с ">этот ответ. Это не сработало для меня. - person Jeff Axelrod; 21.10.2011

Я бы посмотрел на запуск робоэлектрических тестов в сборке Maven. Это упрощает запуск тестов. В Eclipse тоже. И, вероятно, также существует бесконечная поддержка Maven.

person Manfred Moser    schedule 20.10.2011
comment
В документации Infinitest не указана поддержка Maven. Я играл с sbt и успешно создал с его помощью свое приложение для Android, но еще не внедрил его в свою обычную разработку. Я почти уверен, что sbt поддерживает какой-то тип автоматического запуска тестов после сборки, который, я думаю, заменит Infinest. - person Jeff Axelrod; 20.10.2011
comment
Да, я так строил. - person Jeff Axelrod; 20.10.2011