Duvida: Arquivo JAR (3) 99% pronto

3 respostas
A

Ola pessoal, tokuma duvida aki, por favor quem puder me ajudar da um grito ae…

Vou colocar os passo a passo que fiz para quem puder ir acompanhando e fazendo os testes possa ver o vai acontecendo…

Seguinte:

tenho a estrutura (modo simples):

PASSO (1):

/app3/br/AloMundo.java
/app3/usa/HelloWord.java
/app3/TestaLibs.java

PASSO (2):

O arquivo AloMundo.java (dentro de /app3/br/) tem o seguinte conteúdo:

package br;

public class AloMundo {
	public String falaAlo()     { return ("Alo Mundo!"); }
	public String falaAi()      { return ("Fala ae!"); }
	public String falaGalera()  { return ("Por enquanto eh soh galera!"); }
}

O arquivo HelloWord.java (dentro de /app3/usa/) tem o seguinte conteúdo:

package usa;

public class HelloWorld {
	public String sayHello() { return ("Hello World!"); }
	public String sayThere() { return ("Hi There!"); }
	public String sayGuys()  { return ("That´s all guys!"); }
}

PASSO (3):

O arquivo TestaLibs.java (dentro de app3/) tem o seguinte conteúdo:

import usa.HelloWorld;
import br.AloMundo;

class TestaLibs {
	public static void main(String[] args) {

		// Cria objetos das bibliotecas.
		HelloWorld hw = new HelloWorld();
		AloMundo am = new AloMundo();
		
		// Chama métodos de hw.
		System.out.println(hw.SayHello());
		System.out.println(hw.sayThere());
		System.out.println(hw.sayGuys());

		// Chama métodos de am.
		System.out.println(am.falaAlo());
		System.out.println(am.falaAi());
		System.out.println(am.falaGalera());
	}
}// Fim do programa.

PASSO (4):

"Ajeitei" o CLASSPATH com o comando (windows):

C:\app3&gtset CLASSPATH=%CLASSPATH%;c:\app3

… e compilei com o comando:

C:\app3&gtjavac -verbose TestaLibs.java
[parsing started TestaLibs.java]
[parsing completed 121ms]
[search path for source files: [., c:\app3]]
[search path for class files: [C:\Arquivos de programas\Java\jdk1.5.0_10\jre\lib
\rt.jar, C:\Arquivos de programas\Java\jdk1.5.0_10\jre\lib\jsse.jar, C:\Arquivos
 de programas\Java\jdk1.5.0_10\jre\lib\jce.jar, C:\Arquivos de programas\Java\jd
k1.5.0_10\jre\lib\charsets.jar, C:\Arquivos de programas\Java\jdk1.5.0_10\jre\li
b\ext\dnsns.jar, C:\Arquivos de programas\Java\jdk1.5.0_10\jre\lib\ext\localedat
a.jar, C:\Arquivos de programas\Java\jdk1.5.0_10\jre\lib\ext\sunjce_provider.jar
, C:\Arquivos de programas\Java\jdk1.5.0_10\jre\lib\ext\sunpkcs11.jar, ., c:\app
3]]
...
[checking TestaLibs]
[loading .\usa\HelloWorld.class]
[loading .\br\AloMundo.class]
...
[wrote TestaLibs.class]
[total 872ms]

Como vcs podem ver o compilador buscou o diretório onde eu estava mais o c:\app3
depois leu os pacotes em br e usa e depois criou o ByteCode TestaLibs.class

Agora eu testei com o comando:

C:\app3&gtjava TestaLibs
Hello World!
Hi There!
Thats all guys!
Alo Mundo!
Fala ae!
Por enquanto eh soh galera!

Gentem, até aqui ta show e vcs viram que ta funcionando.
E os meus problemas (dúvidas começaram agora… veja…

PASSO (5):

Criei o jar de br com o comando:

C:\app3&gtjar -vcf br/AloMundo.jar br/AloMundo.class
added manifest
adding: br/AloMundo.class(in = 434) (out= 276)(deflated 36%)

Criei o jar de usa com o comando:

C:\app3&gtjar -vcf usa/HelloWorld.jar usa/HelloWorld.class
added manifest
adding: usa/HelloWorld.class(in = 432) (out= 274)(deflated 36%)

PASSO (6):

Criei um arquivo Manifest.mf em C:\app3&gt com o seguinte conteúdo:

Manifest-Version: 1.0
Created-By: 1.5.0_10 (Sun Microsystems Inc.)
Main-Class: TestaLibs
Name: TestaLibs.class
Java-Bean: True

PASSO (7):

Agora refiz a compilação adicionando o CLASSPATH mais os arquivos .jar que foram criados.
Para isso usei o comando:

C:\app3&gtjavac -cp %CLASSPATH%;/app3/br/AloMundo.jar;/app3/usa/HelloWord.jar TestaLibs.java

Se eu executar o comando java TestaLibs funciona perfeitamente, mas não é isso que eu quero.
Agora queremos criar um jar (multiplataforma) então usaremos o comando:

C:\app3&gtjar -vcfm TestaLibs.jar Manifest.mf TestaLibs.class *.*
added manifest
adding: TestaLibs.class(in = 696) (out= 449)(deflated 35%)
adding: br/(in = 0) (out= 0)(stored 0%)
adding: br/AloMundo.java(in = 227) (out= 131)(deflated 42%)
adding: br/AloMundo.class(in = 434) (out= 276)(deflated 36%)
adding: br/AloMundo.jar(in = 747) (out= 532)(deflated 28%)
adding: Manifest.mf(in = 132) (out= 117)(deflated 11%)
adding: TestaLibs.java(in = 546) (out= 261)(deflated 52%)
adding: TestaLibs.java.bak(in = 530) (out= 259)(deflated 51%)
adding: usa/(in = 0) (out= 0)(stored 0%)
adding: usa/HelloWorld.java(in = 213) (out= 122)(deflated 42%)
adding: usa/HelloWorld.class(in = 432) (out= 274)(deflated 36%)
adding: usa/HelloWorld.jar(in = 751) (out= 531)(deflated 29%)

Ok! Calma lá, o nosso arquivo .jar foir criado, mas com tudo o que tem nessa estrutura como pudemos ver.
Agora executaremos esse arquivo multiplataforma como comando:

C:\app3&gtjava -jar TestaLibs.jar
Hello World!
Hi There!
That¦s all guys!
Alo Mundo!
Fala ae!
Por enquanto eh soh galera!

IIIRAAAA 99% pronto, funcionou do jeito que a gente queria… criar o arquivo multiplataforma.
A minha duvida é que eu so quero os arquivos .class…

Quem puder me (nos) ajudar ganha um doce…

Brigaduuuuuuuuuuuuuuuuu

3 Respostas

Y

Altere esta linha:

C:\app3&gtjar -vcfm TestaLibs.jar Manifest.mf TestaLibs.class *.*

Para isso:

C:\app3&gtjar -vcfm TestaLibs.jar Manifest.mf TestaLibs.class

Note que eu retirei o . do final, pois era isso que fazia com que todos os arquivos fossem adicionados. Caso haja mais arquivos a serem adicionados, você pode colocar os nomes, assim:

C:\app3&gtjar -vcfm TestaLibs.jar Manifest.mf TestaLibs.class Teste2.class Teste3.class

Ou se forem todos os arquivos de classe, use:

C:\app3&gtjar -vcfm TestaLibs.jar Manifest.mf *.class
A

Ola amigo, cara eu ja tinha feito isso, mas nao funciona…veja:

C:\app3>java -jar TestaLibs.jar
Exception in thread “main” java.lang.NoClassDefFoundError: usa/HelloWorld
at TestaLibs.main(TestaLibs.java:10)

…ainda continuo com o problema…

Y

Achei que você tinha uma dúvida, não um problema. oO

Criado 16 de maio de 2007
Ultima resposta 19 de mai. de 2007
Respostas 3
Participantes 2