RESOLVIDO - Como corrigir este erro

vou iniciante em java e estou fazendo este sistema para uma escola no momento que chamo o relatório me da este erro.

Se alguem poder me dar uma luz uma dica ficarei muito agradecido.

run:
Exception in thread “AWT-EventQueue-0” java.lang.NullPointerException
at conexoes.ConexaoMySql.executaSql(ConexaoMySql.java:90)
at Autenticacao.ViewiPrincipal.itemPagamentoMensalAuno(ViewiPrincipal.java:646)
at Autenticacao.ViewiPrincipal.jMenuItem2ActionPerformed(ViewiPrincipal.java:639)
at Autenticacao.ViewiPrincipal.access$2600(ViewiPrincipal.java:27)
at Autenticacao.ViewiPrincipal$27.actionPerformed(ViewiPrincipal.java:431)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:833)
at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:877)
at java.awt.Component.processMouseEvent(Component.java:6533)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6298)
at java.awt.Container.processEvent(Container.java:2236)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2294)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466)
at java.awt.Container.dispatchEventImpl(Container.java:2280)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

este é o meu codigo.
a linha 90

public void executaSql(String sql) {
try {
statement = con.createStatement(resultSet.TYPE_SCROLL_SENSITIVE,resultSet.CONCUR_READ_ONLY);
resultSet = statement.executeQuery(sql);
} catch (SQLException ex) {
//JOptionPane.showMessageDialog(null,"Não foi possível “+ “executar o comando sql,”+ex+”, o sql passado foi "+sql);
}
}

Onde você inicializou o objeto con?

iniciei na class de conexão.
vou postar o código.

public class Conecta_Banco {

public Statement stmt;
public ResultSet rs;
public Statement statement;
public ResultSet resultSet;
private String driver = "org.postgresql.Driver";
private String caminho = "jdbc:postgresql://localhost:5432/escola"; 
private String usuario = "postgres";
private String senha = "17072010";
public Connection conn;
//"jdbc:postgresql://10.0.0.120:5432/escola"; 
public static Connection conector() {
    java.sql.Connection conexao = null;
    // a linha abaixo chama o driver
    String driver = "org.postgresql.Driver";
    //Armazenando informação referente ao banco
    String url = "jdbc:postgresql://localhost:5432/escola";
    String user = "postgres";
    String senha = "17072010";
    try {
        //Estabelecendo conecxão com o banco
        Class.forName(driver);
        conexao = DriverManager.getConnection(url, user, senha);
        return conexao;
    } catch (Exception ex) {
        Logger.getLogger(Conecta_Banco.class.getName()).log(Level.SEVERE, null, ex);
        return null;
    }
}
private Object jlUsuario;

public void abreConexao() {
    try {
        System.setProperty("jdbc.Drivers", driver);
        setConn(DriverManager.getConnection(caminho, usuario, senha));
        //JOptionPane.showMessageDialog(null, "Conectado com sucesso!");
    } catch (SQLException ex) {
        JOptionPane.showMessageDialog(null, "Erro ao conectar!" + ex.getMessage());
        //Logger.getLogger(ConexaoSCI.class.getName()).log(Level.SEVERE, null, ex);
    }
}

public void fechaConexao() {
    try {
        getConn().close();
        //JOptionPane.showMessageDialog(null,"banco fechado");
    } catch (SQLException ex) {
        JOptionPane.showMessageDialog(null, "Não foi possivel " + "fechar o banco de dados: " + ex.getMessage());
    }
}

public boolean executarSQL(String pSQL) {
    try {
        //createStatement de con para criar o Statement
        this.setStatement(getConn().createStatement());

        // Definido o Statement, executamos a query no banco de dados
        this.setResultSet(getStatement().executeQuery(pSQL));

    } catch (SQLException ex) {
        JOptionPane.showMessageDialog(null, ex.getMessage());
        //ex.printStackTrace();
        return false;
    }
    return true;
}

public void executaSql(String sql) {
   try {
       stmt = conn.createStatement(rs.TYPE_SCROLL_SENSITIVE,rs.CONCUR_READ_ONLY);
       rs = stmt.executeQuery(sql);
   } catch (SQLException ex) {
       //JOptionPane.showMessageDialog(null,"Não foi possível "+ "executar o comando sql,"+ex+", o sql passado foi "+sql);
   }
}

public int insertSQL(String pSQL){
    int status = 0;
    try {
        //createStatement de con para criar o Statement
        this.setStatement(conn.createStatement());

        // Definido o Statement, executamos a query no banco de dados
        this.statement.executeUpdate(pSQL);
        
        //consulta o ultimo id inserido
        this.setResultSet(this.getStatement().executeQuery("SELECT MAX(id_disciplina) FROM tb_disciplina"));
        
        //recupera o ultimo id inserido
        while(this.resultSet.next()){
            status = this.resultSet.getInt(1);
        }
        
        //retorna o ultimo id inserido
        return status;
    } catch (SQLException ex) {
        ex.printStackTrace();
        return status;
    }
}

/**
 * @return the stmt
 */
public Statement getStmt() {
    return stmt;
}

/**
 * @param stmt the stmt to set
 */
public void setStmt(Statement stmt) {
    this.stmt = stmt;
}

/**
 * @return the rs
 */
public ResultSet getRs() {
    return rs;
}

/**
 * @param rs the rs to set
 */
public void setRs(ResultSet rs) {
    this.rs = rs;
}

/**
 * @return the conn
 */
public Connection getConn() {
    return conn;
}

/**
 * @param conn the conn to set
 */
public void setConn(Connection conn) {
    this.conn = conn;
}

/**
 * @return the statement
 */
public Statement getStatement() {
    return statement;
}

/**
 * @param statement the statement to set
 */
public void setStatement(Statement statement) {
    this.statement = statement;
}

/**
 * @return the resultSet
 */
public ResultSet getResultSet() {
    return resultSet;
}

/**
 * @param resultSet the resultSet to set
 */
public void setResultSet(ResultSet resultSet) {
    this.resultSet = resultSet;
}

}

Quando postar código, selecione o mesmo e clique no botão </> do fórum, senão fica horrível para analisar.

Esse foi o primeiro código que você postou:

public void executaSql(String sql) {
    try {
        // aqui você tenta chamar um método do objeto 'con'
        statement = con.createStatement(resultSet.TYPE_SCROLL_SENSITIVE,resultSet.CONCUR_READ_ONLY);
        resultSet = statement.executeQuery(sql);
    } catch (SQLException ex) {
        //JOptionPane.showMessageDialog(null,"Não foi possível “+ “executar o comando sql,”+ex+”, o sql passado foi "+sql);
    }
}

Agora no código novo seu método está assim:

public void executaSql(String sql) {
    try {
        // agora você tenta chamar um método de um objeto 'conn'
        stmt = conn.createStatement(rs.TYPE_SCROLL_SENSITIVE,rs.CONCUR_READ_ONLY);
        rs = stmt.executeQuery(sql);
    } catch (SQLException ex) {
        //JOptionPane.showMessageDialog(null,"Não foi possível "+ "executar o comando sql,"+ex+", o sql passado foi "+sql);
    }
}

Entretanto na sua classe Conecta_Banco não vejo o atributo conn ser inicializado em lugar nenhum.
Existe um método setConn, que a meu ver é desnecessário, se esta classe é responsável por criar a conexão, porque ela precisa de um setConn?

/**
 *
 * @author André Gouveia
 */
public class Conecta_Banco {

    public Statement stmt;
    public ResultSet rs;
    public Statement statement;
    public ResultSet resultSet;
    private String driver = "org.postgresql.Driver";
    private String caminho = "jdbc:postgresql://localhost:5432/ibscDB"; //"jdbc:postgresql://10.0.0.120:5432/escola"
    private String usuario = "postgres";
    private String senha = "17072010";
    public Connection conn;

    //iniciando os objetos
    public Conecta_Banco() {
        this.rs = rs;
        this.stmt = stmt;
        this.conn = conn;
    }

    //abre conexão com o banco
    public void abreConexao() {
        try {
            System.setProperty("jdbc.Drivers", driver);
            setConn(DriverManager.getConnection(caminho, usuario, senha));
            //JOptionPane.showMessageDialog(null, "Conectado com sucesso!");
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Erro ao conectar!" + ex.getMessage());
            //Logger.getLogger(ConexaoSCI.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    //fecha conexão com o banco
    public void fechaConexao() {
        try {
            getConn().close();
            //JOptionPane.showMessageDialog(null,"banco fechado");
        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, "Não foi possivel " + "fechar o banco de dados: " + ex.getMessage());
        }
    }

    public boolean executarSQL(String pSQL) {
        try {
            //createStatement de con para criar o Statement
            this.setStatement(getConn().createStatement());

            // Definido o Statement, executamos a query no banco de dados
            this.setResultSet(getStatement().executeQuery(pSQL));

        } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, ex.getMessage());
            //ex.printStackTrace();
            return false;
        }
        return true;
    }

    public  void executaSql(String sql) {
        try {
            stmt = conn.createStatement(rs.TYPE_SCROLL_SENSITIVE, rs.CONCUR_READ_ONLY);
            rs = stmt.executeQuery(sql);
        } catch (SQLException ex) {
            //JOptionPane.showMessageDialog(null,"Não foi possível "+ "executar o comando sql,"+ex+", o sql passado foi "+sql);
        }
    }

    public int insertSQL(String pSQL) {
        int status = 0;
        try {
            //createStatement de con para criar o Statement
            this.setStatement(conn.createStatement());

            // Definido o Statement, executamos a query no banco de dados
            this.statement.executeUpdate(pSQL);

            //consulta o ultimo id inserido
            this.setResultSet(this.getStatement().executeQuery("SELECT MAX(id_disciplina) FROM tb_disciplina"));

            //recupera o ultimo id inserido
            while (this.resultSet.next()) {
                status = this.resultSet.getInt(1);
            }

            //retorna o ultimo id inserido
            return status;
        } catch (SQLException ex) {
            ex.printStackTrace();
            return status;
        }
    }

    /**
     * @return the stmt
     */
    public Statement getStmt() {
        return stmt;
    }

    /**
     * @param stmt the stmt to set
     */
    public void setStmt(Statement stmt) {
        this.stmt = stmt;
    }