Classes executáveis em um arquivo JAR

4 respostas
Rafael_Afonso

Olá:

Quando tenho uma classe executável (ou seja, que tenha um metodo main()) num arquivo JAR tenho que incluir no manifest.mf o nome desta classe como Main-Class. Daí para executá-la digito java -jar meuJar.jar. Até aí tudo bem, certo?
:?: Mas se não escrever o Main-Class? Como faria para executar esta classe executável?
:?: E se eu tivesse mais de uma classe executável, e quisesse executar uma ou outra, como faria? seria algo como java -jar meuJar.jar path.da.classe.Executavel?

Grato,

4 Respostas

cv1

Para executar a classe executavel, tudo que vc tem que fazer é executar o executável da sua Java virtual machine preferida, assim:

java -cp seuJar.jar foo.bar.SuaClasse

(adicione outros JARs no -cp à gosto)

Algo como não, exatamente assim :smiley:

dukejeffrie

“cv”:

Algo como não, exatamente assim :D

Nein nein, se ele mandar java -jar o java vai tentar olhar no jar a classe principal e vai considerar o resto argumentos para o programa.

Mais detalhes na especificacao do Mecanismo de extensoes do Java.

[]s!!

Rafael_Afonso

Algo como não, exatamente assim :smiley:

Bem, na verdade o que funciona é justamente sua primeira sugestão: incluir o arquivo JAR no classpath e passar o nome de uma classe executável deste arquivo.

Grato,

dukejeffrie

Aí é que tá o problema. Imagina que vc sempre vai fazendo isso, vc sempre tem que fazer a manutencao do seu classpath, pq senao uma hora ele vai ter 800 diretorios.

Cada programa deveria ter o seu classpath configurado. Se vc passa na linha de comando, com -cp, se vc coloca no manifesto, a escolha é sua. Mas tudo tem implicacoes. Por exemplo, um JAR com um manifesto bonitinho pode ser executado, no Windows, com um double-click.

Quando vc mostra um programa assim pra pessoas que detêm poder, mas nao entendem nada do assunto, vc nao ouve coisas como “e nao dá pra gerar um executável?? Esse .BAT é muito feio”.

Hehehehe… já vi essa!
[]s!!

Criado 9 de agosto de 2003
Ultima resposta 11 de ago. de 2003
Respostas 4
Participantes 3