how to change the name of a Java application process?
When executing a Java application the process name given to it is usually java.exe
or javaw.exe
. But how can I make it be called by the name of my application?
Solution 1:
These methods are suited for servers with a lot of java processes running, and where you need a quick way of finding the correct jvm (not using jps.) For applications, I suppose launch4j or another wrapper is the way to go.
On unix, If you are launching from a shell sript (at least for bash and possibly for other decent shells) you can use:
exec -a goodname java ...
to launch java
and pass "goodname" as the 0th argument, which will be shown as the process name in ps
etc.
A perhaps better alternative (that seems to work also for top
) is to create a symlink: ln -s /usr/bin/java /usr/local/bin/kallekula
.
Shortcuts in windows won't do the trick, but windows vista/7 supports symlinks using mklink
. That may work, but I haven't tested. I am not sure if exec -a
also works with cygwin bash on Windows.
Solution 2:
Check out launch4j, it is an executable wrapper that allows you to assign executable names.
Solution 3:
Unless you launch Java via JNI in your own custom built executable, the process name will always be java.exe.
There are several java launchers/wrappers that can generate this executable for you.
- Launch4j, looks to be the most recent and up to date
- JSmooth
- install4J, commercial, more than you need