Dúvida: Pacotes Jar (2)

1 resposta
A

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

tenho a estrutura (modo simples):

/app3/AloMundo.java
/app3/HelloWord.java
/app3/TestaLibs.java

O arquivo AloMundo.java tem o seguinte conteúdo:

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 tem o seguinte conteúdo:

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

O AloMundo.java virou um AloMundo.jar.
O HelloWord.java virou um HelloWord.jar.

O arquivo TestaLibs.java tem o seguinte conteúdo:

import HelloWord.*;
import AloMundo.*;

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

		// Cria objetos das bibliotecas.
		HelloWord hw = new HelloWord();
		AloMundo am = new AloMundo();
		
		// Chama métodos de hw.
		System.out.println(hw.falaAlo());
		System.out.println(hw.falaAi());
		System.out.println(hw.falaGalera());

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

A idéia é a de que o TestaLibs.java vire um TestaLibs.jar, porém quando vou compilar tenho o erro do além:

C:\app3&gtjavac -cp %CLASSPATH%;/app3/AloMundo.jar;/app3/HelloWord.jar TestaLibs.j
ava
TestaLibs.java:3: package HelloWord does not exist
import HelloWord.*;
^
TestaLibs.java:4: package AloMundo does not exist
import AloMundo.*;
^
TestaLibs.java:14: cannot find symbol
symbol  : method falaAlo()
location: class HelloWord
                System.out.println(hw.falaAlo());
                                     ^
TestaLibs.java:15: cannot find symbol
symbol  : method falaAi()
location: class HelloWord
                System.out.println(hw.falaAi());
                                     ^
TestaLibs.java:16: cannot find symbol
symbol  : method falaGalera()
location: class HelloWord
                System.out.println(hw.falaGalera());
                                     ^
5 errors

Lógico que ta cheio de erro pois os pacotes nao foram vistos… galera, sei que é simples… mas me da 1 luzaí…

Brigaduuuuuuuuuuuuuuuuuuuuuuuuu

1 Resposta

marciosc

Arbonan:
- Primeiro: Que programa que você tá usando pra programar que não ta te indicando os erros??
- Segundo: A forma como você fez os imports nessa classe teste estão errados porque você não faz o import de uma classe pelo nome do .jar e sim pela package onde o .class se encontra.

Pra fazer o que você tá querendo fazer, primeiro você tem que montar outra estrutura de diretórios, mais ou menos assim.
/app3/aloMundo/AloMundo.java
  /app3/helloWorld/HelloWorld.java
  /app3/TestaLibs.java
Suas classes ficariam assim:
// Classe AloMundo
package aloMundo;

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

//Classe HelloWorld
package helloWorld;

public class HelloWorld 
{
 	public String sayHello() { return ("Hello World!"); }
 	public String sayThere() { return ("Hi There!"); }
 	public String sayGuys()  { return ("That´s all guys!"); }
 }
Depois de gerado os .jars(independente de nome, mas o ideal é o .jar identifique seu conteúdo, ou seja, crie helloworld.jar e alomundo.jar), vc dele cola-los no classpath da sua aplicação e implementar a classe teste dessa forma:
import helloWord.*; // ou import helloWord.HelloWorld;
 import aloMundo.*; // ou import aloMundo.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.falaAlo());
 		System.out.println(hw.falaAi());
 		System.out.println(hw.falaGalera());
 
 		// Chama métodos de am.
 		System.out.println(am.falaAlo());
 		System.out.println(am.falaAi());
 		System.out.println(am.falaGalera());
 	}
 }// Fim do programa.
Se houver algum erro na compilação desse código, é que eu não ele. Apenas copiei o que você postou corrigindo alguns detalhes, diretamente no fórum! Espero ter ajudado!!
Criado 15 de maio de 2007
Ultima resposta 15 de mai. de 2007
Respostas 1
Participantes 2