NullPointerException at java.io.File.init (Unknown Source) in Java with Lucene

-1

I'm getting the following error in my Java code

Exception in thread "Thread-2" java.lang.NullPointerException
    at java.io.File.<init>(Unknown Source)
    at Indexador.indexaArquivosDoDiretorio(Indexador.java:42)
    at Princ$1$1.run(Princ.java:235)
    at java.lang.Thread.run(Unknown Source)

I do not know why I started giving this error, I believe it's something related to File objects that do not accept String. Here is the code:

public void indexaArquivosDoDiretorio() {
    try {
        Properties prop = getProp();
        // Diretório que irá guardar o índice;
        String diretorioDosIndices = prop.getProperty("diretorio.indice");
        // Diretório que contém os documentos que serão indexados;
        String diretorioParaIndexar = prop.getProperty("diretorio.fonte");
        File diretorio = new File(diretorioDosIndices);
        apagaIndices(diretorio);
        // Directory: representa o diretório do índice;
        Directory d = new SimpleFSDirectory(diretorio);
        // Analyser/StandardAnalyser: fazem o pré-processamento do texto.
        // Existem analisadores inclusive em português;
        Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_47);
        // IndexWriterConfig: configurações para criação do índice. No
        // projeto serão utilizados os valores padrão;
        IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_47,
                analyzer);
        // Inicializa o IndexWriter para gravação;
        writer = new IndexWriter(d, config);
        long inicio = System.currentTimeMillis();
        indexaArquivosDoDiretorio(new File(diretorioParaIndexar));
        // Fecha o IndexWriter e comita as mudanças
        writer.commit();
        writer.close();
        long fim = System.currentTimeMillis();
        JOptionPane.showMessageDialog(
                null,
                "Quantidade de arquivos indexados: " + i + "\n"
                        + "Tempo para indexar: "
                        + String.valueOf((fim - inicio) / 1000) + "s");
    } catch (IOException e) {
        logger.error(e);
    }
}

Line 42:

File diretorio = new File(diretorioDosIndices);
    
asked by anonymous 28.03.2014 / 13:09

1 answer

3

File has constructor that receives as an argument an instance of String , see the constructor javadoc.

  

File (String pathname)
  Creates a new File instance by converting the given pathname string into an abstract pathname.

This exception occurs because of the argument passed in the constructor to be null , in which case the variable diretorioDosIndices is null.

In the constructor of File that receives String as argument there is the following documentation for exceptions thrown:

  

Throws:
  NullPointerException - If the pathname argument is null

Java doc removed from this address .

Finally, check for the value of the diretorioDosIndices variable, since there is no doubt that the prop.getProperty("diretorio.indice") call does not find the property and therefore returns null .

    
28.03.2014 / 13:31