[Resolvido] Parametro para .jar?

12 respostas
L

Bom dia pessoal!

Gostaria de saber se existe alguma forma de se passar um parametro para uma classe presente dentro de um .jar.
Seria mais ou menos o seguinte:

  • tenhu 2 .jar’s, cada um com um programa.
  • atraves da execuçao do x1.jar tenhu q chamar o x2.jar e passar um parametro para o construtor de uma classe presente no x2.jar.

Tem como fazer isso?
Ou estou viajando muito?

Obrigado!!

[]'s

12 Respostas

adriano_si

Ambos são executáveis ???

Queres passar um parâmetro para uma classe específica de um .jar em execução sem importar esse jar par ao teu Projeto e criar um objeto dessa classe ???

Fala qual a tua necessidade, de repente tem uma outra alternativa mais simples… Eu nunca vi nada parecido com o que queres… se alguém souber também ficarei grato…

Abs []

L

Ola amigo!

Bom,

estamos desenvolvendo um projetinho pra facul, que seria mais ou menos assim: teria um menu que chamaria diversos outros programas, dependendo da opção que foi selecionada.

Estava pensando/pesquisando : se eu importar todos os jar’s no programa que contem meu menu, ocorreria a substituiçao no classpath caso eu substituisse algum jar?

adriano_si

Cara… a tua idéia é excelente… mas pensa que pra teres um Programa diferente para cada chamada, necessitas que cada item de menu seja um Programa de fato…

O que pode parecer simplificar a manutenção, pode é piorar, afinal terás Ns Projetos, Ns Jars sendo gerenciados em vários diretórios diferentes, cada um desses jars em execução vai gerar um Processo de SO que consumirá memória separadamente, enfim, é isso que queres mesmo ???

Se o problema for a organização, podes pensar em separar toda a tuaplicação em pacotes bem organizados, isso ajuda inclusive a manteres uma arquitetura enxuta e um único lugar pra validares a mesma, se separares em vários projetos, terás que verificar de um por um se a arquitetura está ok… Aff… vai te dar bastante trabalho…

Quanto a tua dúvida do JAR, eu já fiz algumas vezes essa alteração na marra e funcionou, mas realmente não aconselho… Qual o real problema em recompilar o Programa de novo pra gerar uma nova versão ???

Quanto ao teu cliente, pode substituir versão pelo Java Web Start… dá um estudada nesse cara…

Qualquer outra dúvida ou questionamento, posta aí…

Abs []

L

O problema é que seriam varios clientes, o que daria muito trabalho para re-instalar em todos.

Outro ponto é que existem algumas empresas que solicitaram “personalizações” em certas telas. Ou seja, podem existir algumas diferenças entre os clientes…
Se eu conseguisse separar por programa, creio que ficaria bem mais facil, tanto para separar os programas para cliente quanto para redistribui-lo…

Quanto ao JWS, ja andei estudando sobre ele, e estamos pensando em utiliza-lo caso fosse possivel aplicar nossa ideia inicial.

O que vc chama de fazer alteração na marra? (rsrsrs)
E pq nao aconselharia?

Obrigado!

Ivan_Alves

lucasgcp:
Bom dia pessoal!

Gostaria de saber se existe alguma forma de se passar um parametro para uma classe presente dentro de um .jar.
Seria mais ou menos o seguinte:

  • tenhu 2 .jar’s, cada um com um programa.
  • atraves da execuçao do x1.jar tenhu q chamar o x2.jar e passar um parametro para o construtor de uma classe presente no x2.jar.

Tem como fazer isso?
Ou estou viajando muito?

Obrigado!!

[]'s

Quanto a isso eu não sei mas, uma alternativa poderia ser gravar os parametros desejados em um arquivo ai quando o programa x2.jar for executar ele busca os parametros nesse arquivo e por ai vai.

flw

adriano_si

lucasgcp:
O problema é que seriam varios clientes, o que daria muito trabalho para re-instalar em todos.

Outro ponto é que existem algumas empresas que solicitaram “personalizações” em certas telas. Ou seja, podem existir algumas diferenças entre os clientes…
Se eu conseguisse separar por programa, creio que ficaria bem mais facil, tanto para separar os programas para cliente quanto para redistribui-lo…

Quanto ao JWS, ja andei estudando sobre ele, e estamos pensando em utiliza-lo caso fosse possivel aplicar nossa ideia inicial.

Bom, então vamos lá… sendo assim, reforço ainda mais minha tese, pois terás´praticamente 1 projeto para cada cliente…

Suponhamos que te software tenha 30 telas,e dessas 30, 12 sejam totalmente diferentes de cliente pra cliente, terás que ficar fazendo gerência desses jars separadamente para cada novo cliente que tiveres ??? Porque ao invés disso não gerenciar simplesmente um Projeto completo para esse cliente ??? Pois querendo ou não, é assim que o teu software está se configurando…

O que podes fazer é criar toda a base e colocares dentro de um .jar que será exportado por todos os teus clientes e as telas que forem configuráveis, fazes separadamente por projeto…

Agora acredite, daqui a pouco cada cliente irá querer o Software todo da sua maneira e a tua manutenção por .jar ficará algo realmente insuportável…

Enfim, ainda não entendi o porque de separar em jars separados cada tarefa do Sistema, uma atualização é sempre uma atualização, porque não atualizar o Software de uma vez só ???

lucasgcp:

O que vc chama de fazer alteração na marra? (rsrsrs)
E pq nao aconselharia?

Obrigado!

Heueheuehuehueu ficou mal explicado mesmo… na marra que eu falo é abrir o .jar com um empacotador, excluir um .jar de dentro das libs e copiar um jar de fora para dentro do pacote…

Abs []

adriano_si

Fala Ivan… tbm pensei nisso, em um arquivo ou banco de dados, mas a realidade da motivação em fazer isso é que já entrou em discussão… viável e possível é…

mas o “por que” é que não estou concordando… heuehueu

Abs []

L

A ideia seria justamente essa!
Isolar problemas de clientes, mas mantendo um minimo de universalidade! Se eu fosse criar um projeto para cada cliente nao ficaria mais complexo?

As alteraçoes em telas não sao todos os clientes que solicitaram, por isso creio que nao teriamos muito trabalho!
Mas eu vou levar todos os levantamentos que vc fez para o pessoal Vejo que precisamos discutir melhor isso ai!!

[/quote]

Não havia pensado nisso!! :shock:
Caso dermos sequencia nesse pensamento, e não encontrarmos outra maneira de faze-lo, irei fazer justamente isso!!

Muito obrigado aos dois!!
Me ajudaram bastante!!

[]'s

adriano_si

Lucas perceba… de repente a idéia de vocês precisa ser melhor decidida…

Eu vejo que o Software de vocês existirá para atender à um segmento de mercado.

De repente é uma boa idéia vocês fecharem um produto e venderem para clientes em comum, conforme as necessidades forem aparecendo, vocês vão adequando o Software a todos os clientes…

Isso tem bastante no mercado e dizer não para um cliente nem sempre é ruim…

Se vocês abrirem brechas pra tudo de um cliente, daqui a pouco você terá um Software por cliente mesmo, e aí não será apenas um Projeto pra manter, serão 30 projetos (de acordo com o N de tarefas soltas) por cada um de seus clientes… você compreendeu minha preocupação ???

Muito cuidado com isso, pois a ficha de vocês pode cair quando já for tarde demais… Achei muito sem sentido essa solução, devido o tamanho de Processos que você terá que gerenciar na memória…

Enfim…

Sucesso na solução

L

Entendi sim adriano!

Tambem estou ficando com um pe atras com essa ideia…

Ja enviei o link do topico para meus companheiros, para vermos melhor o que iremos fazer…

Mais uma vez agradeço enormemente a atenção e paciencia!!

Abraçoss!!

Kanin_Dragon

Jovem,

Você pode passar informações para o seu jar via linha de comando, basta seu jar possuir uma classe com o método static void main. Lembrando que o método static void main recebe um Array de Strings com isso podemos passar “n” parametros via linha de comando para o nosso jar.

Abs,

L

Edit:

Pesquisando melhor (rsrsrs), encontrei a solução! Para quem estiver com o mesmo problema, basta passar os parametros na chamada de execução do jar, para a main como disse nosso amigo Kanin !

Exemplo:

java -jar C:/Caminho do jar "parametro1" "parametro2" "parametro3" "parametro N"

Obrigado novamente!

Criado 31 de maio de 2011
Ultima resposta 1 de jun. de 2011
Respostas 12
Participantes 4