[Resolvido] Mudar o nome do processo Java.exe

teria como?
algum argumento na JVM, q possa mudar o nome do processo em especifico ?

pois se eu subir 10 processos … todos eles serão chamados de java.exe
e se eu tivesse q fechar um processo em especifico via linha de comando… eu nao saberia reconhecer qual o processo exato para fechar… jah q todos possuem o mesmo nome…

alguem sabe se existe algum meio de mudar o nome do processo?

[quote=alucardeck]teria como?
algum argumento na JVM, q possa mudar o nome do processo em especifico ?

pois se eu subir 10 processos … todos eles serão chamados de java.exe
e se eu tivesse q fechar um processo em especifico via linha de comando… eu nao saberia reconhecer qual o processo exato para fechar… jah q todos possuem o mesmo nome…

alguem sabe se existe algum meio de mudar o nome do processo?[/quote]

Uma pergunta, pq vc quer fazer isso? Interroper o processo não me parece uma boa saída para fechar seu programa!

Você deveria interromper o processo pelo seu PID.

bom vou tentar explicar…

estou utilizando varias frameworks em conjunto…
todas sendo executadas pelo ANT de modo automatizado…

ou seja…
eu testo algumas classes com o TestNG… enquanto o EMMA faz o report delas…
entao eu de vez em qdo preciso utilizar o Selenium para automatizar alguns testes de tela…

soh q rodando o Selenium pelo Eclipse… ele abre o processo normalmente… mas como vc fica sem uma “interface grafica” não eh possivel fechar por outro modo sem ser o (“Quadrado Vermelho”) do Eclipse (no console)… eu precisaria fechar o aplicativo de forma automatizada via ANT…

via tasks ele aparece como o Java.exe … se eu der um taskkill java.exe … ele fecha todos os processos Java da maquina… incluindo outros servidores…

então eu precisaria especificar esse processo… para poder fechar somente ele…

mas como eu vou pegar o PID especifico dele?

teria como pegar no momento q ele eh criado??
pq nao tem como o programa prever o PID dele antes de ser executado…

ninguem conhece um meio de fazer isso??

creio q por argumentos da JVM possa mudar… mas nao encontro nenhuma documentação sobre os parametros dela…

quando vc usa o comando “java” existe o parametro “-D” q serve para setar variaveis, nao sei se existe alguma variavel q carrega por default o nome “java.exe”

acredito que nao tenha como
pois o nome do processo é o nome do executavel na hora da compilação
uma solução para vc
seria ctrl+alt+del
na aba aplicativos clique com o da direita no seu programa
e clique no item “ir para processo”
nao sei se é bem isso que vc quer
mas ja passei por isso
na hora que ia matar o processo eu fazia isso

Você pode usar a solução porca que é a de ir até o diretório onde está seu java.exe, e fazer um monte de cópias dele (por exemplo, “programa.exe”, “testador.exe” etc.)
O Task Manager vai mostrar o nome adequado.

[quote=thingol]Você pode usar a solução porca que é a de ir até o diretório onde está seu java.exe, e fazer um monte de cópias dele (por exemplo, “programa.exe”, “testador.exe” etc.)
O Task Manager vai mostrar o nome adequado.
[/quote]

entao… jah tentei isso…
mas mesmo assim continua sendo executado o java.exe
onde eu mudo o executavel a ser usado?

E se você criasse em C um executável que usando JNI, criasse a JVM e ligasse ela a sua classe? No manual de JNI da sun há um capítulo explicando como fazer isso. Por sinal, o java.exe é apenas um programa que faz exatamente isso.

Apesar que é mais fácil a solução do thingol mesmo. Mas ela não funcionará se o eclipse (ou o ANT) chamar sempre o java.exe, então a solução poderia ser “corrigir” essa solução, substituindo o java.exe por um outro programa em C mais ou menos assim (não testei, mas é algo assim):

#include<stdio.h>

int main (int argc, char ** argv) {
    int i, j, k;
    /* Conta o argv[1] duas vezes! */
    /* +5 é porque são contados o ".exe" e o terminador nulo. */
    int tamanho = strlen(argv[1]) + 5;
    for (i = 1; i < argc; i++) {
        tamanho += strlen(argv[i]) + 1;
    }

    char* str = (char *) malloc(tamanho * sizeof(char));
    for (i = 0; i < strlen(argv[1]) && argv[1][i] != '.'; i++) {
        str[i] = argv[1][i];
    }
    str[i++] = '.';
    str[i++] = 'e';
    str[i++] = 'x';
    str[i++] = 'e';
    str[i++] = ' ';

    for (j = 1; j < argc; j++) {
        for (k = 0; k < strlen(argv[j]); k++) {
            str[i++] = argv[j][k];
        }
        str[i++] = ' ';
    }
    str[i] = '[code]
#include&lt;stdio.h&gt;

int main (int argc, char ** argv) {
    int i, j, k;
    /* Conta o argv[1] duas vezes! */
    /* +5 é porque são contados o &quot;.exe&quot; e o terminador nulo. */
    int tamanho = strlen(argv[1]) + 5;
    for (i = 1; i &lt; argc; i++) {
        tamanho += strlen(argv[i]) + 1;
    }

    char* str = (char *) malloc(tamanho * sizeof(char));
    for (i = 0; i &lt; strlen(argv[1]) && argv[1][i] != '.'; i++) {
        str[i] = argv[1][i];
    }
    str[i++] = '.';
    str[i++] = 'e';
    str[i++] = 'x';
    str[i++] = 'e';
    str[i++] = ' ';

    for (j = 1; j &lt; argc; j++) {
        for (k = 0; k &lt; strlen(argv[j]); k++) {
            str[i++] = argv[j][k];
        }
        str[i++] = ' ';
    }
    str[i] = '\0';
    system(str);
    free(str);
}
[/code]';
    system(str);
    free(str);
}

Basicamente essa gambiarra é para que quando seja chamado "java.exe SuaClasse param1 param2", ele chame ao invés disso "SuaClasse.exe SuaClasse param1 param2". :lol:
POG!

bom agradeço a ajuda galera…
consegui resolver…

fiz o seguinte…

copiei o arquivo java.exe da pasta da JRE…
por exemplo uma copia para " selenium.exe "

entao no prompt jah consigo executar esse selenium.exe q teria a mesma função do java.exe

ai no ANT… usei o comando

[code]

[/code]

e tudo funciona perfeitamente com o nome do processo modificado =)