Sequencia de Imports, influencia ? RESOLVIDO

7 respostas
PadrE

Olá pessoal !

Queria saber o seguinte…

Se eu tenho dois arquivos .jar com alguns métodos de mesmo nome… digamos versões diferentes… onde o import eh igual…

Ao utilizar os objetos que eles possuem em comum… onde ele vai buscar ??

Ele olha a ordem em que importei os .jar para o meu projeto (utilizo o Eclipse 3.2) ??

Ou teria uma forma de eu definir isso ???

vlw !

7 Respostas

danieldestro

Dois JARs que possuem classes de menos nomes (pacote + nome) ???

PadrE

Isso... tipo.. tenho:
Arq_1.jar
- org.com.bla.bla
---- -Objeto
--------- -MetodoX

E tambem tenho

Arq_2.jar
- org.com.bla.bla
---- -Objeto
-------- -MetodoY

Ao fazer o import eu utilizo
import org.com.bla.bla.Objeto;

Quando eu for utilizar os metodos desse objeto seria:

Objeto x = new Objeto();

x.MetodoX();

Como pode ver o MetodoX soh tem no Arq_1.jar. Mas como ele faz pra saber ???

Ele olha a sequencia em que os .jar foram importados no projeto, ou isso eh mesmo uma "cagada" (desculpe a expressão) ?

PadrE

Bom… analisei a situação e e conclui que se isso acontecer no seu projeto… reveja !!!

Pq isso eh realmente uma grande merda…

Em que situação isso pode ocorrer ?? Quando vc pega um projeto com mais 3 anos de vida e que passou na mão de mais de 87463 desenvolvedores e nenhuma alteração foi documentada…

Vlw !

peczenyj

Isso iria gerar uma mensagem no compilador. o que vc poderia fazer é explicitar qual objeto vc está usando, passando o caminho completo de um deles (ou dos dois).

felipesp

Qual das classes será chamada depende do classloader. Saber qual das classes iria carregar depende do ambiente em que o código vai rodar.

Acho que não vale a pena especular. Concordo o PadrE: reveja o código. Não está bom.

pcalcado

A menos que você realmente esteja lidando com múltiplas versões de objetos, reveja o seu projeto.

PadrE

Nossa… consegui resolver e o melhor… entendi o que houve… hehe

Vou relatar o ocorrido aki, pq eh algo que pode ocorrer mesmo…

Bom… a aplicação passou pela mão de uns 5 programadores antes de cair no meu colo…

Então me pediram para alterar a versão dos relatórios, ou seja, queriam utilizar o iReport mais atual do que o 0.2.5(se me lembro bem, era esse) de antes…

Então achei moleza… eh so pegar e substituir os .jar que o iReport utiliza… e alterar as refrências na hora de gerar o executável…

Mudei numa boa, tirei as referências antigas e coloquei as novas… fui testar pelo eclipse e o que ocorreu ?? Ele me dava um erro falando que tal método não foi encontrado… aquele “MethodNotFound”…

Abri o .jar correspondente e vi o método lá… “Kraca… como não ta achando”…

Então… percercebi um pequeno detalhe… quando eh gerado o executável do programa ele cria alguns arquivos .jar e nesses arquivos .jar ele “empacota” todos os outros jar’s utilizados…

Bom… normal… eh comum vc pegar e colocar as referências juntas…

“MAS FIQUEI P… DA VIDA QUANDO VI QUE ESSES .JAR (OS GERADOS NA BUILD) ESTAVAM REFERENCIADOS NO ECLIPSE…”

Não sabia se chorava ou se dava rizada… um dos 5 desenvolvedores anteriores incluiu o .jar final no path do eclipse… ai acabava por terem várias referências iguais…

Removi esses .jar que são gerados no executável e tudo funcionou uma blza… =]

Vlw !

Criado 28 de setembro de 2006
Ultima resposta 2 de out. de 2006
Respostas 7
Participantes 5