Domanda

ho bisogno di ottenere tutti i file .class situati in un file .jar che a sua volta si trova all'interno di un altro file .ear.

Sto provando ad usare il JarInputStream per ottenere l'accesso al .ear. Questo sta funzionando bene. Tuttavia, quando ho iterare gli elementi JarEntry all'interno del JarInputStream, posso non sembrano essere in grado di aprirlo come un file JAR per leggere tutti gli elementi .class all'interno di esso.

JarInputStream jarFile = new JarInputStream(new FileInputStream("c:/path/to/my/.ear"));

JarEntry jarEntry = null;

while(true) {

    jarEntry = jarFile.getNextJarEntry();

    if(jarEntry == null) {
        break;
    }

    if((jarEntry.getName().endsWith(".jar"))) {
        //Access to the nested jar?
    }
}

A cura: la pena ricordare che il codice di cui sopra è nello stesso vaso, come le classi che sto cercando di trovare a livello di codice.

È stato utile?

Soluzione

Si dovrebbe prima estrarre il file .jar dal file .ear e quindi provare a leggere il file di classe.

In effetti, è così che anche le Application Server fanno. Essi estrarre il file EAR in una directory temporanea e quindi caricare le classi da lì.

Altri suggerimenti

Hai provato questo?

[...]    
    if((jarEntry.getName().endsWith(".jar"))) {
        JarInputStream subJarStream = new JarInputStream(jarFile);
        // the same search again
    }
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top