3
respostas

java.lang.ClassNotFoundException

Olá Alura. Eu fiz tudo direitinho conforme indicado no curso mas parece q ue o compilador não reconhece.

public class Mapeador {
    private Map<Class<?>,Class<?>> mapa = new HashMap<>();

    public void load(String nomeArquivo) throws Exception{
    Properties p = new Properties();
    p.load(new FileInputStream(nomeArquivo));
    for(Object key:p.keySet()){

    Class<?> interf = Class.forName(key.toString());
    Class<?> impl = Class.forName(p.get(key).toString());
    if(!interf.isInterface()){
        throw new RuntimeException("O tipo "+interf.getName()+" não é interface");
        }
    if(!interf.isAssignableFrom(impl)){
        throw new RuntimeException("A classe"+impl.getName()+" não implementa "+interf.getName());
        }
    mapa.put(interf,impl);
    }
    }

    public Class<?> getImplementacao(Class<?> interf){
    return mapa.get(interf);
    }

}

public class Principal {
public static void main(String[] args) throws Exception {
    Mapeador m = new Mapeador();
    m.load("classes.prop");

    System.out.println(m.getImplementacao(List.class));
    System.out.println(m.getImplementacao(Map.class));
}
}
3 respostas

Copiei suas duas classes aqui e não tive nenhum erro de compilação :). Toma apenas cuidado com seus imports, confere se todos são do java.*

Puts. Que estranho hein. Os imports ta tudo certo.

Também copiei o código e consegui compilar e executar sem problemas. Entretanto, é necessário garantir que o arquivo classes.prop está corretamente escrito, contendo classes que serão encontradas em tempo de execução.No vídeo são inseridas as classes do pacote java.util, logo devem sempre estar disponíveis. Deve-se garantir que os nomes das classes inseridos no arquivo de propriedades existem e poderão ser encontrados pelo classLoader.

p. ex.:

# mapeamento valido
java.util.List = java.util.ArrayList
java.util.Map = java.util.HashMap

deverá funcionar como esperado, mas

# mapeamento invalido
java.unknown.interface = java.util.ArrayList
java.util.Map = java.unknown.implementation

irá falhar exatamente com o erro que você reportou: java.lang.ClassNotFoundException

Verifique se o seu arquivo de propriedades está correto e/ou o comente aqui para analisarmos...

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software