как изменить имя процесса приложения Java?

голоса
37

При выполнении приложения Java имя процесса , данное ему, как правило , java.exeили javaw.exe. Но как я могу сделать это можно назвать по имени моего приложения?

Задан 19/05/2009 в 14:40
источник пользователем
На других языках...                            


8 ответов

голоса
18

Проверьте launch4j , это исполняемая оболочка , которая позволяет назначать имена исполняемых файлов.

Ответил 19/05/2009 в 14:42
источник пользователем

голоса
11

Если вы не запускать Java с помощью JNI в собственном обычае построенного исполняемого файла, имя процесса всегда будет java.exe.

Есть несколько ява пусковыми / оберток, которые могут генерировать этот исполняемый файл для вас.

  • Launch4j , выглядит самым последним и до настоящего времени
  • JSmooth
  • install4j , коммерческий, больше , чем нужно
Ответил 19/05/2009 в 14:43
источник пользователем

голоса
5

Если вы используете Sun JDK, вы можете также использовать инструмент «JPS» командной строки, чтобы получить подробный список Java процессов, запущенных на поле.

Ответил 19/05/2009 в 15:52
источник пользователем

голоса
37

Эти методы подходят для серверов с большим количеством ява процессов работает, и где вам нужен быстрый способ найти правильный JVM (не используя JPS.) Для приложений, я полагаю launch4j или другой оберточный путь.

В UNIX, если вы запускаете из sript оболочки (по крайней мере, для Баша и, возможно, для других приличных оболочек), вы можете использовать:

exec -a goodname java ...

для запуска javaи передать «goodname» в качестве аргумента, 0 - го , которое будет показано в качестве имени процесса в psт.д.

Возможно лучшая альтернатива (что , кажется, работает также top), чтобы создать символическую ссылку: ln -s /usr/bin/java /usr/local/bin/kallekula.

Клавиши быстрого доступа в окна не будет делать трюк, но Windows Vista / 7 поддерживает символические ссылки , используя mklink. Это может работать, но я не проверял. Я не уверен , если exec -aработает с Cygwin Баш на Windows.

Ответил 19/05/2009 в 16:01
источник пользователем

голоса
3

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

Запуск ps -ef | grep javaи вы получите список , который выглядит примерно так:

 mruser    7518  7505  4 11:37 pts/3    00:00:00 /usr/bin/java -classpath MRD3030_Linked.jar peralex.MyApp

Тогда pkill -f peralex.MyAppбудет убивать правильный процесс.

Ответил 05/06/2009 в 13:03
источник пользователем

голоса
2

Не все ароматы Exec поддерживают флаг -a. Если у вас нет, то argv0 программа делает что - то подобное.

Ответил 16/12/2009 в 22:52
источник пользователем

голоса
3

Это специфично для Windows.
Я столкнулась с таким же вопросом , где я должен убить конкретную программу Java с помощью Taskkill . При запуске программы Java, Tasklist показывал ту же программу с именем изображения , установленного в java.exe . Но убивать его , используя Taskkill / F java.exe остановит все другие , кроме предназначенных один , который не требуется Java - приложений.

Так я бегу ту же программу Java с помощью:

начать "MyProgramName" Java Java-программы ..

Здесь начинают команда откроет новое окно и запустить программу Java с названием набора окна в MyProgramName .

Теперь эта ява убить-программу с помощью следующей команды Taskkill:

Taskkill / ц "MyProgramName"

Ваша программа Java будет только убить. Остальные не будут затронуты.

Ответил 05/12/2013 в 13:16
источник пользователем

голоса
2

Вы можете сделать это с помощью LD_PRELOADрегулировочной шайбы: https://github.com/airlift/procname

Прокладка просто вызывает Линукс , prctl()когда начинается процесс:

static void __attribute__ ((constructor)) procname_init()
{
   prctl(PR_SET_NAME, "myname");
}

Вызов должен происходить в основном потоке, так что это не возможно сделать это с Java или даже с агентом JVMTI, так как те происходят на другом потоке.

Ответил 21/02/2016 в 03:09
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more