Classloaders

3 respostas
Paulo_Silveira

Assunto: Uma introdução ao ClassLoader. Aprenda para que serve, como funciona e crie o seu próprio ClassLoader.

Você pode ler este artigo na íntegra aqui

Por favor, coloque os seus comentários sobre este artigo aqui.

3 Respostas

J

Olá. Não sei se minha dúvida refere-se exclusivamente a ClassLoaders, mas estou com uma dúvida que está sendo gerada usando-o, portanto, lá vai:

Estou tentando instalar o Geronimo. Porém, apresenta um erro inicial dizendo que o classloader não consegue localizar a classe Ljavax.net.ssl.KeyManager. Observei que existe um L no começo, estando todo o restante ok. Não acredito que o L esteja ao acaso, mas também não consigo entender seu significado. Alguém poderia me esclarecer o seu uso?

Grato.

T

"LPacote.NomeDaClasse;" é o nome "interno" de uma classe, que a JVM usa para referência.

Vou dar um exemplo.
import java.util.*;

class NomeClasse {
    static void imprimirNomeClasse (String titulo, Class cls) {
        System.out.println (titulo);
        System.out.println ("Nome da classe: " + cls.getName());
        System.out.println ("Nome canônico: " + cls.getCanonicalName());
        System.out.println ("Nome simples: " + cls.getSimpleName());
        System.out.println ();
    }

    public static void main(String[] args) {
        String s = "teste";
        int[] i = new int[10];
        Integer[] j = new Integer[10];
        List<Double> d = new ArrayList<Double>();
        float f = 3.4f;
        
        imprimirNomeClasse ("Nome da classe String:", s.getClass());
        imprimirNomeClasse ("Nome da classe de um array de int: ", i.getClass());
        imprimirNomeClasse ("Nome da classe de um array de Integer: ", j.getClass());
        imprimirNomeClasse ("Nome da classe de um ArrayList: ", d.getClass());
        imprimirNomeClasse ("Nome da 'classe' de um primitivo (float): ", float.class);
    }
}
A saída deste programa:
Nome da classe String:
Nome da classe: java.lang.String
Nome canônico: java.lang.String
Nome simples: String

Nome da classe de um array de int:
Nome da classe: [I
Nome canônico: int[]
Nome simples: int[]

Nome da classe de um array de Integer:
Nome da classe: [Ljava.lang.Integer;
Nome canônico: java.lang.Integer[]
Nome simples: Integer[]

Nome da classe de um ArrayList:
Nome da classe: java.util.ArrayList
Nome canônico: java.util.ArrayList
Nome simples: ArrayList

Nome da 'classe' de um primitivo (float):
Nome da classe: float
Nome canônico: float
Nome simples: float
J

Opa, valew a explicação, muito legal. Eu estou usando bastante agora ClassLoaders, para ser mais específico, é quase a função vital do projeto, junto com reflect. Muito legal!

Grande abraço.

Criado 14 de abril de 2003
Ultima resposta 13 de nov. de 2007
Respostas 3
Participantes 3