Estranho erro em File

3 respostas
gfcittolin

Olá :slight_smile:

Em uma aplicação web, tenho uma classe para Fazer as conexões ao mysql. estou usando Properties para armazenar a url, classe, sql’s… e criei uma outra classe em singleton para carregar um arquivo de properties, e então pela classe do BD que eu uso as properties…

só que sempre dá um erro na linha que estou instanciando ‘File f = new File()’ , ou 2 linhas abaixo, independente do que estiver… detalhes do erro:

Exception in thread "main" java.lang.NullPointerException
        at java.util.Properties$LineReader.readLine(Properties.java:365)
        at java.util.Properties.load(Properties.java:293)
        at data.DBProperities.<init>(DBProperities.java:31)  // nesta linha  o File f = new File();
        at data.DataBase.<init>(DataBase.java:24)
        at data.DataBase.main(DataBase.java:53)

onde DataBase é a classe que faz a conexão ao BD e DBProperties é a classe que acessa o arquivo e carrega para um properties…

alguém tem idéia do que pode ser ou o que é?
eu posso usar a classe File() num projeto web?
Uso NetBeans 5.0, Windows XP_SP2, JDK 1.5.0_07

Desde já obrigado a todos :smiley:

3 Respostas

cassio

Amigo, não vi seu código, mas a impressão é que o arquivo não existe com o nome que vc está tentando usar para abri-lo… Então logo depois de criar o objeto da classe File vc deve tentar realizar alguma operação sobre ele, o que resulta no NullPointerException…

Você não está usando “properities” ao invés de “properties” no nome de alguma variável ou no caminho para o arquivo?!

Olha isso:

at data.DBProperities.<init>(DBProperities.java:31)  // nesta linha  o File f = new File();

Está escrito properities… Dá uma olhada! É só um chute (mesmo!), não vi o código :slight_smile:

Falou!

E

manda o codigo pra darmos uma olhada.

gfcittolin

Realmente, eu fiz um refactor daquela classe de DBProperities para DBProperties, apesar de eu ter verificado antes e não havia nenhum ponteiro errado ou algo assim, até porquê o NB acusaria… o que um erro de digitação não faz heim??? :smiley:

Mas o erro continua aparecendo sempre… até no comentário aparece erro… :lol:

Lá vai os códigos:

/*
 * DataBase.java
 *
 * Created on 25 de Julho de 2006, 12:14
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package data;

import java.sql.*;

/**
 *
 * @author Guilherme
 */
public class DataBase {
    
    Connection conn;
    DBProperties db;
    
    public DataBase() {
        db = new DBProperties();
    }
    
    /** Creates a new instance of DataBase */
    public void Connect() throws SQLException {
        try {
            Class.forName(db.getProperties().getProperty("class"));
        } catch (ClassNotFoundException ex) {
            ex.printStackTrace();
        }
        conn = DriverManager.getConnection(db.getProperties().getProperty("url"));
    }
    
    public void Disconnect() {
        try{
            conn.close();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
    
    public ResultSet Login(String user, String password) throws SQLException {
        PreparedStatement ps = conn.prepareStatement(db.getProperties().getProperty("login"));
        ps.setString(1, user);
        ps.setString(2, password);
        return ps.executeQuery();
    }
    
    public static void main(String[] args) {
        DataBase db = new DataBase();
        try {
            System.out.print("Connecting... ");
            db.Connect();
            System.out.println("Done!");
            System.out.print("Disconnecting... ");
            db.Disconnect();
            System.out.println("Done!");
            System.out.println("Connection test end");
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        
    }
}
/*
 * DBProperties.java
 *
 * Created on 1 de Agosto de 2006, 18:32
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package data;

import java.net.URISyntaxException;
import java.util.Properties;
import java.io.*;

/**
 *
 * @author Guilherme
 */
public class DBProperties {
    
    //private static DBProperties dbproperties = new DBProperties();
    
    //public static DBProperties getInstance() {
    //    return dbproperties;
    //}
    
    private Properties prp = new Properties();
    
    public DBProperties() {
        try {
            File f = new File("C://db.properties");
            //System.out.println(f.getCanonicalPath());
            FileInputStream fis = new FileInputStream(f);
            prp.load(fis);
            fis.close();
        } catch (IOException exc) {
            exc.printStackTrace();
        }
    }
    
    public Properties getProperties() {
        return prp;
    }
}

E o erro…

init:
deps-module-jar:
deps-ear-jar:
deps-jar:
compile-single:
run-main:
db.properties
java.io.FileNotFoundException: db.properties (O sistema não pode encontrar o arquivo especificado)
        at java.io.FileInputStream.open(Native Method)
        at java.io.FileInputStream.<init>(FileInputStream.java:106)
        at data.DBProperties.<init>(DBProperties.java:33)
        at data.DataBase.<init>(DataBase.java:24)
        at data.DataBase.main(DataBase.java:53)
Exception in thread "main" java.lang.NullPointerException
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:164)
        at data.DataBase.Connect(DataBase.java:30)
        at data.DataBase.main(DataBase.java:56)
Connecting... 
Java Result: 1
BUILD SUCCESSFUL (total time: 0 seconds)

(off-topic): O método File() não aceitava uma URL como parâmetro??? agora é só URI???

valeu a todos

Criado 9 de agosto de 2006
Ultima resposta 10 de ago. de 2006
Respostas 3
Participantes 3