Arquivos estranhos dentro do jar

2 respostas
FelipeBValio

Quando crio um jar, dentro dele são feitas cópias das minhas classes com um $ no fim do nome.
Por exemplo, se tem a classe MinhaClasse.class, existem também MinhaClasse$1.class, MinhaClasse$2.class… a assim por diante.

Como me é interessante gerar um jar pequeno, há como remover essas cópias? Ou antes disso, essas cópias são necessárias?

2 Respostas

davidbuzatto

FelipeBValio:
Quando crio um jar, dentro dele são feitas cópias das minhas classes com um $ no fim do nome.
Por exemplo, se tem a classe MinhaClasse.class, existem também MinhaClasse$1.class, MinhaClasse$2.class… a assim por diante.

Como me é interessante gerar um jar pequeno, há como remover essas cópias? Ou antes disso, essas cópias são necessárias?

Essas classes não são cópias. As classes internas e internas anônimas também precisam ser compiladas :wink:
A quantidade de .class com o prefixo de uma determinada classe é igual a quantidade de classes internas (anônima ou não) da sua classe principal.

[]´s

davidbuzatto

Exemplo:

Veja o código:

public class Teste {

    public Teste() {
        Runnable r = new Runnable() {
            public void run() {
            }
        };
    }
    
    private class Teste2 {
        
    }
    
}

Depois de compilado var gerar três .class:
Teste.class (o class da classe Teste)
Teste$1.class (o class da classe interna anônima implementada no construtor da classe Teste)
Teste$Teste2.class (o class da classe interna Teste2, declarada dentro de Teste).

Se tivessem mais classes internas anônimas a numeração seria seguida.

Sua classe provavelmente é uma classe de interface gráfica e normalmente as IDEs geram classes internas anônimas para tratar eventos.

[]´s

Criado 5 de agosto de 2010
Ultima resposta 5 de ago. de 2010
Respostas 2
Participantes 2