2014-01-08 9 views
4

Мне нужно создать пакетный файл, который запускает java jar при запуске Windows. Для этого мне нужно знать имя фляги, которую я хочу автозапускать. Я предполагаю, что пользователь может изменить имя банки, поэтому перед созданием летучей мыши я хочу проверить, изменилось ли название моей банки.Как узнать имя запущенного jar

Я могу получить абсолютное положение фляги с этим кодом, но как я могу получить его имя?

File f = new File(System.getProperty("java.class.path")); 
    File dir = f.getAbsoluteFile().getParentFile(); 
    String path = dir.toString(); 

спасибо.

+0

Это не имеет особого смысла. Если пользователь меняет имя флага, нет необходимости «находить» банку в пакетном файле. Просто укажите на то место, которое вы уже знаете. Это то же самое, что и искать эту банку для случая, когда пользователь переводит ее в другую папку. –

+0

каждый раз, когда банка запускается с опцией «start at windows startup», как отмечено, она будет регенерировать файл bat с текущей позицией и именем. –

+0

Если вы проверите документы: http://docs.oracle.com/javase/tutorial/essential/environment/sysprop.html , вы обнаружите, что системное свойство java.class.path может содержать не только одно каталог, который вы хотите. Путь к классу может содержать много записей, и тогда вы оставите их сортировку. Ответ Евгения Дофофеева, запрашивающий класс для его местоположения, кажется мне более эффективным методом поиска местоположения вашего файла jar. – OYRM

ответ

3

Один из пути, чтобы получить URL источника кода класса, например

URL r = JdbcTemplate.class.getProtectionDomain().getCodeSource().getLocation(); 
    System.out.println(r); 

печатает

file:/D:/.repository/org/springframework/spring-jdbc/3.2.4.RELEASE/spring-jdbc-3.2.4.RELEASE.jar 

в моем проекте

+0

спасибо, он работает. –

Смежные вопросы