Usando Reflection para instanciar um objeto a partir do nome da classe

Oi pessoal,

estou tentando criar uma instância de um objeto de uma classe chamada BSPCodAPI_Client usando Reflection da seguinte forma:

Class bspClass = Class.forName(className); // recupera o construtor do BSP Constructor constructorBSP = bspClass.getConstructor(String.class); // cria a instância do BSP BSPCodAPI_Client bsp = (BSPCodAPI_Client)constructorBSP.newInstance(id);

No entanto, é lançada a exceção NullPointerException quando executo a linha 5 do trecho de código acima. Alguém teria alguma ideia do por quê disto estar ocorrendo?

p.s.: O nome da classe (bem como do pacote ao qual ela pertence) está correto.

Eu utilizo desta forma.

MyClazz obj = (MyClazz) Class.forName("com.myproject.MyClazz").newInstance();
....

id é null?
constructorBSP é null?

Nao, id não é null. Ela é declarada em outra parte do código.

Então provável que constructorBSP seja null.

vdb, tentei como dissestes:

BSPCodAPI_Client bsp = (BSPCodAPI_Client)Class.forName(className).newInstance();

Mas… Só obtive uma nova exception: InstantiationException.

O construtor da classe BSPCodAPI_Client tem parametros ?
Aquela forma so funciona se a classe possuir um construtor padrao (sem parametros).

Ha! Por isso… O construtor da classe tem um parâmetro - String. Poderia ser algum problema no classpath?

eu faço assim

Class.forName("classe").getConstructor(String.class).newInstance("Aqui");

Bom… mesmo com a sugestão de zoren, continuo com o NullPointerException. Começo a desconfiar que talvez seja alguma configuração mal feita pelo eclipse… Há a possibilidade?

Fiz correndo

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package javaapplication4;

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;

/**
 *
 * @author Felipe
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException {

        Pessoa pessoa = (Pessoa) Class.forName("javaapplication4.Pessoa").getConstructor(String.class).newInstance("Zoren");

        System.out.println("Nome: " + pessoa.getNome() );
    }

}

class Pessoa {

    private String nome;

    public Pessoa(String nome) {
        this.nome = nome;
    }

    public String getNome() {
        return this.nome;
    }

}

Mas funciona, é mais ou menos assim

Ha! Descobri o por quê do NullPointerException. O problema é numa chamada ao construtor da superClasse… :stuck_out_tongue: Valeu pela ajuda, pessoal!