| 
 | 
| 
 
Как получить имя исполняемого jar файла 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Привет! Кажется перепробывал все решения в интернете, но так и не смог получить имя запущенного jar-файла. Все варианты кода приводить не буду, так как результат одинаков, а самый простой вариант ниже. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Результат работы сохраненного этого кода в jar-файл FileName.jar выглядит так Код: java 1. , а хотелось бы получить строку, содержащую Код: java 1. . ... Дирректория, из которой вызывается этот файл получается без проблем Код: java 1. Это, вообще, задача реальная? Или решение в принципе в другом подходе? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 09.06.2020, 19:56 | 
  
  
  
   | 
||
| 
 
Как получить имя исполняемого jar файла 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Сергей_ТВ Привет! Кажется перепробывал все решения в интернете, но так и не смог получить имя запущенного jar-файла. Все варианты кода приводить не буду, так как результат одинаков, а самый простой вариант ниже. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Результат работы сохраненного этого кода в jar-файл FileName.jar выглядит так Код: java 1. , а хотелось бы получить строку, содержащую Код: java 1. . ... Дирректория, из которой вызывается этот файл получается без проблем Код: java 1. Это, вообще, задача реальная? Или решение в принципе в другом подходе? Вообще реальная Например, так: Main.class.getProtectionDomain().getCodeSource().getLocation() - только 1) нужны проверки на null 2) если приложение упаковано в единый jar (например через spring-boot-maven-plugin :: repackage), то location может указывать на путь внутри архива (в спринге вообще будет составной путь из пути к архиву + пути внутри архива, если не путаю) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 09.06.2020, 20:12 | 
  
  
  
   | 
||
| 
 
Как получить имя исполняемого jar файла 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Zzz79, достаточно, чтобы он определил свое имя. С локацией проблем нет: папку в которой он расположен без проблем выводит строка Код: java 1. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 09.06.2020, 20:14 | 
  
  
  
   | 
||
| 
 
Как получить имя исполняемого jar файла 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Осмысленность данного действия не очень понятна А с учетом, что код не обязательно должен лежать на диске и не обязательно в JAR - зачем такой НЕ портируемый велосипед нужен. Можно пойти с другого конца, например: https://docs.oracle.com/javase/6/docs/api/java/lang/management/RuntimeMXBean.html#getInputArguments() https://docs.microsoft.com/en-us/windows/win32/api/processenv/nf-processenv-getcommandlinea в линукс cat /proc/$PPID/cmdline ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 09.06.2020, 21:11 | 
  
  
  
   | 
||
| 
 
Как получить имя исполняемого jar файла 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Сергей_ТВ, если-бы ты запустил приложение JVizualVM которое показывает овер-дохрена свойств java процессов то ты-бы увидел что свойство sun.java.command которое указывает на локальный путь от текущего фолдера до джарника. Я не спрашиваю зачем тебе это надо. Ведь java процесс может начать бутстрап не только с jar но и с class файла в фолдере среды разработки как это делают IDE для ускорения отладки. А может Graal или Excelsior вообще не заполняют это свойство. Ведь их старт сильно отличается от классической JVM.... Но было-бы очень прикольно если-бы вопросшающие говорили дескыть - Я хочу X для того чтобы Y. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 09.06.2020, 22:03 | 
  
  
  
   | 
||
| 
 
Как получить имя исполняемого jar файла 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Звучит вопрос "Зачем?" Отвечу: для того, чтобы реализовать в приложении возможность перезагрузки самого себя. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 10.06.2020, 14:28 | 
  
  
  
   | 
||
| 
 
Как получить имя исполняемого jar файла 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Сергей_ТВ Звучит вопрос "Зачем?" Отвечу: для того, чтобы реализовать в приложении возможность перезагрузки самого себя. Командная строка которым приложение запускалось - самое то. Имени JAR'ника все равно не достаточно. Ведь в нем может быть несколько классов c main методом. Потеряются параметры / настройки JVM переданные в командной строке (а они могут быть важны для корректной работы) и так далее. IMHO ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 10.06.2020, 15:11 | 
  
  
  
   | 
||
| 
 
Как получить имя исполняемого jar файла 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Сергей_ТВ Звучит вопрос "Зачем?" Отвечу: для того, чтобы реализовать в приложении возможность перезагрузки самого себя. Обычно реализуют более простой (примитивный) сервис типа watch-dog (сторожевая собака) которая смотрит что процесс живой и стартует если упал. Живой - это например существует mutex в операционке или сокет слушатель от твоего приложения. Почему простой? Потому что надёжность его должна быть выше чем надежность твоего jar-ника. В твоём-же варианте любое изменение jar-ника ставит под вопрос сам факт надёжности механизма перезапуска. Сторожевую собаку можно реализовать на crontab + bashscript ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 10.06.2020, 16:35 | 
  
  
  
   | 
||
| 
 
Как получить имя исполняемого jar файла 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  mayton механизма перезапуска Вопрос зачем он нужен Например я делал такой механизм для системы автоматического обновления софта в клиент-сервере Скачивалась новая версия из СУБД * во временную папку, запускался "перезапускальшик", происходил выход из приложения, перезапускальшик проверял, что приложение полностью закрыто (на выход из приложения тоже требуется время) и копировал файлы приложения, запускал новую версию приложения Но ничего определять мне не требовалось. Т.к. имя своей собственной программы я и так знал ))) /да и файлов там было значительно больше одного/ * upgrade системы, в том числе и обновления кода клиента, происодило через SQL скрипт (INSERT'ами) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 10.06.2020, 16:46 | 
  
  
  
   | 
||
| 
 
Как получить имя исполняемого jar файла 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  В процессе обновления "запускальщиком" является сам пользователь. Но здесь надо знать детали. Потому-что проблема которую я описал приводик к потенциальной невозможности перезапустить приложение Сергея самому приложению. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 10.06.2020, 16:51 | 
  
  
  
   | 
||
| 
 
Как получить имя исполняемого jar файла 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Сергей_ТВ Звучит вопрос "Зачем?" Отвечу: для того, чтобы реализовать в приложении возможность перезагрузки самого себя. Зачем?! Когда есть Kubernetes + Docker. <:o) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 11.06.2020, 08:53 | 
  
  
  
   | 
||
| 
 
Как получить имя исполняемого jar файла 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  mad_nazgul Сергей_ТВ Звучит вопрос "Зачем?" Отвечу: для того, чтобы реализовать в приложении возможность перезагрузки самого себя. Зачем?! Когда есть Kubernetes + Docker. <:o) Ты ему средства, а он так и не ответил на "зачем" - после глюка - апдейт - перезагрузка Оси Мммм. Дальше придумать не могу))) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 11.06.2020, 09:44 | 
  
  
  
   | 
||
| 
 
Как получить имя исполняемого jar файла 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Мой сценарий полностью исключает ситуацию когда после наката обновлений "всё упало все пропало" и автоматизация не работает. И нужно ручное участие админов чтоб поправить все рабочие станции предприятия или корпорации. Их может быть десятки тысяч что само по себе доставляет lulz. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 11.06.2020, 10:04 | 
  
  
  
   | 
||
| 
 
Как получить имя исполняемого jar файла 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  PetroNotC Sharp mad_nazgul пропущено... Зачем?! Когда есть Kubernetes + Docker. <:o) Ты ему средства, а он так и не ответил на "зачем" - после глюка - апдейт - перезагрузка Оси Мммм. Дальше придумать не могу))) Дык kubernetes как раз и предназначен, чтобы быстро поднять, то что "упало" :-) Правда, возможно для ТС это будет оверхэд. Вполне возможно достаточно правильно настроить unit в Systemd для приложения. Грубо говоря, может быть надо в начале посмотреть на существующие решения, для "поднятия" приложения если что-то случилось. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 11.06.2020, 12:12 | 
  
  
  
   | 
||
| 
 
Как получить имя исполняемого jar файла 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  mad_nazgul Дык kubernetes как раз и предназначен, чтобы быстро поднять, то что "упало" :-) Правда, возможно для ТС это будет оверхэд. Мне кажется что будет неправдой говорить что это его предназначение. У кубера много предназначений и не все из них автору нужны. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 11.06.2020, 12:17 | 
  
  
  
   | 
||
| 
 
Как получить имя исполняемого jar файла 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  mayton mad_nazgul Дык kubernetes как раз и предназначен, чтобы быстро поднять, то что "упало" :-) Правда, возможно для ТС это будет оверхэд. Мне кажется что будет неправдой говорить что это его предназначение. У кубера много предназначений и не все из них автору нужны. Я и говорю, что kubernetes может быть overhead. :-) ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 11.06.2020, 14:27 | 
  
  
  
   | 
||
| 
 
Как получить имя исполняемого jar файла 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 12.06.2020, 00:45 | 
  
  
  
   | 
||
| 
 
Как получить имя исполняемого jar файла 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Sergunka ИМХО если есть возможность не использовать это, то лучше не использовать. Вещь интересная, но очень "капризная". Для примера можно поставить Eclipse и кучу сторонних плагинов, а потом наслаждаться постоянными зависаниями и падениями. Стандартные плагины в Eclipse сейчас более-менее вылизаны и не приводят к падению. Хотя лет 5-7 назад, и они могли уронить Eclipse. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 12.06.2020, 06:24 | 
  
  
  
   | 
||
| 
 
Как получить имя исполняемого jar файла 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  OSGI, java-security. Все эти хештеги потеряли смысл после после того как наметился тренд на отказ от дорогого и мощного железа в пользу облак где инстанция поднимается в 2 мышко-клика и далее сама инстанция упрощается от полноценного Linux-stack до контейнера, сервиса и просто функкции. ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 12.06.2020, 10:04 | 
  
  
  
   | 
||
| 
 
Как получить имя исполняемого jar файла 
 | 
|||
|---|---|---|---|
| 
 #18+ 
    
  Благодарю всех откликнувшихся! За то, что уделили внимание! Хотя по правде сказать - ответы не помогли. Полагаю из-за того, что я пока не дорос до мега задач,  решения которых предлагались. Оказалось, что путь нормально определяется тем кодом что написан выше, если сделать экспорт именно Jar file (см скиншот ниже), а не Runnable Jar file, который я делал и получал Код: java 1. [img=Screen Shot 2020-06-16 at 9.22.39 PM.png] ... Возвращаясь к вопросу "Зачем", именно за тем, как ответил в первый раз. А делать выводы об осмысленности такого предназначения равно популярному ответу несведущих "поищи в интернете". Но это так, для того, чтобы улыбнулись. Я Вам все равно благодарен. И опубликовал новый вопрос в новой теме (Как измененить отображаемое имя основного класса Jar file). Сможете помочь? ...  | 
|||
| 
 : 
 Нравится:
      
  Не нравится:
      
  
   | 
|||
| 16.06.2020, 20:53 | 
  
  
  
   | 
||
| 
 | 

start [/forum/topic.php?desktop=1&fid=59&tid=2120778]:  | 
    0ms | 
get settings:  | 
    7ms | 
get forum list:  | 
    12ms | 
check forum access:  | 
    3ms | 
check topic access:  | 
    3ms | 
track hit:  | 
    40ms | 
get topic data:  | 
    11ms | 
get forum data:  | 
    2ms | 
get page messages:  | 
    54ms | 
get tp. blocked users:  | 
    2ms | 
| others: | 238ms | 
| total: | 372ms | 

| 0 / 0 | 

На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даете согласие с использованием данных технологий.