Problema em manipulação de EAR/ZIP

8 respostas
sapulha

Boa tarde pessoal.

Estou criando uma aplicação que precisa manipular arquivos .zip

Baixei o tutorial existente aqui mesmo no GUJ, mais estou com um problema.

Estou manipulando arquivos ear.

O problema é que quando eu comprimo e gero um novo ear, o JBoss não consegue identificar o META-INF como um diretório válido.

Quando abri o arquivo gerado, notei que os atributos CRC e Método do zip estão vazios na pasta, só são preenchidos nos arquivos internos.

Quando gero o zip por outro aplicativo, como o 7-zip, isso não acontece.

Alguém sabe como posso resolver esse problema?

8 Respostas

T

Um arquivo EAR é um arquivo JAR, provavelmente você vai ter de usar alguma daquelas classes (JarInput/OutputStream, JarFile) que são mais apropriadas para lidar com JAR. (Elas são iguaizinhas às que mexem com ZIP mas têm alguns métodos a mais para lidar com MANIFESTs.)

sapulha

Então thingol, já tentei isso, e acontece o mesmo problema, o diretório META-INF, apesar de estar dentro do ear, não é reconhecido pelo JBoss como um diretório, aí me retorna um erro dizendo que não existe o application.xml na hora do deploy.

sapulha

Galera, alguém tem algum exemplo de classe java que gere arquivos zip com diretórios dentro???

Desde que seja diferente od que está no tutorial aqui do GUJ, já me ajudaria, pois assim eu teria um parametro de comparação para ver o que posso tá fazendo de errado.

Valeu

T

Agora entendi. O seu problema é que você está gerando o arquivo de tal modo que ele é, basicamente:

arquivo1
diretorio1/arquivo2
diretorio1/arquivo3

Quando o JBoss quer o seguinte:

arquivo1
diretorio1/
diretorio1/arquivo2
diretorio1/arquivo3

Provavelmente você precisa adicionar um ZipEntry com conteúdo vazio e com nome terminado com “/”, indicando que a entrada é um diretório.

sapulha

Hummmmmm, pode ser, vou tentar.

Valeu thingol.

sapulha

Putz, thingol, a solução que vc me deu resolveu meu problema em partes.

O arquivo gerado está idêntico ao gerado pelo ANT, com excessão do atributo Sistema Operacional. No ANT este atributo fica como UNIX, enquanto com a java.util.Zip fica com FAT.

Acho que é isso o que está fazendo o JBoss ainda reclamar, pq de resto, tá igualzinho os dois arquivos.

Vc sabe se tem como mudar isso ?

Obrigado

T

Pergunta imbecil número um - você pode usar o comando “jar” para gerar um JAR e um EAR. Ele deve usar essas streams (JarOutputStream etc.)
Por acaso o comando “jar” gera um EAR que o JBoss não consegue abrir?

sapulha

Cara, gerando com o comando JAR, o arquivo fica igualzinho e o JBoss reconhece, deve ter alguma cagada no meu código, vou rever desde o começo.

Obrigado pela força.

Criado 24 de janeiro de 2007
Ultima resposta 24 de jan. de 2007
Respostas 8
Participantes 2