Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    214

    dov'è l'errore?

    Volendo eseguire il seguente codice:

    codice:
    import java.io.*;
    
    /*
       IMPORTIAMO I PACKAGE NECESSARI PER
       LAVORATE CON GLI XML 
    /**/
    import org.jdom.*;
    import org.jdom.output.XMLOutputter;
    import org.jdom.input.SAXBuilder;
    
    
    
    public class ModificaXML
    {
              String nomefile;
              public ModificaXML(String nomeFile)
              {
                   this.nomefile = nomeFile; 
              }
    
              public void modifica()
             {
                    File f = new File(nomefile); 
    
                    /*
                         ISTANZIAMO UN OGGETTO SAXBuilder
                         CHE CI PERMETTE DI PARSARE UN XML 
                      /**/
                  SAXBuilder saxbuilder = new SAXBuilder
                     (
                               "org.apache.xerces.parsers.SAXParser",false
    
                      );
    
                    /*
                          ISTANZIAMO UN OGGETTO Document
                      /**/
                   Document documento = null;
    
                  try
                     {
                         /*
                             COSTRUIAMO UN Document DA UN XML
                        /**/
                    documento = saxbuilder.build(f);
                     }catch (JDOMException e)
                     {
                            System.err.println ("errore: "+e);
                     } 
    
                    if(documento != null)
                    {
                        /*
                               ISTANZIAMO UN OGGETTO Element 
                               PRENDENDO IL RIFERIMENTO AD UN
                               SUPERTAG GIA' ESISTENTE 
                           /**/
                      Element root = documento.getRootElement();
    
                     /*
                            ISTANZIAMO ALTRI OGGETTI Element 
                            PASSANDOGLI LE STRINGHE
                            CHE SARANNO I NOMI DEI NOSTRI TAG 
                         /**/
                    Element newinitparam = new Element("new-init-param");
                        Element paramname = new Element("param-name");
                        Element paramvalue = new Element("param-value");
    
                    /*
                           ASSEGNAMO DEI VALORI DI TIPO "CDATA"
                           AI TAG param-name E param-value:
                          <param-name>nuovo nome</param-name>
                        /**/
                   paramname.addContent(new CDATA(" nuovo nome"));
                       paramvalue.addContent(new CDATA(" nuovo valore"));
    
                  /*
                         AGGIUNGIAMO I TAG param-name E
                         Param-value AL TAG new-init-param
                     /**/
                      newinitparam.addContent(paramname);
                          newinitparam.addContent(paramvalue);
    
                 /*
                       AGGIUNGIAMO IL TAG new-init-param
                       AL SUPERTAG root
                   /**/
                  root.addContent(newinitparam);
                  } 
    
                  BufferedWriter out = null;
                  try
                 {
                /*
                      ISTANZIAMO LA CLASSE XMLOutputter
                      CHE CI PERMETTE DI FORMATTARE IL
                      FILE XML.
                  /**/
                XMLOutputter xout = new XMLOutputter();
                   xout.setIndent(true);
                   xout.setNewlines(true);
    
              /*
                  CON QUESTA ISTRUZIONE SCRIVIAMO
                  IL DOCUMENTO documento IN UN
                  BufferedWriter CHE CREA IL FILE
                 TRAMITE UN FileWriter
                /**/
             xout.output(documento,out);
               }catch(IOException e)
               {
                      System.out.println("Error in producing file: " + e.getMessage());
               }finally
               {
                try
                {
                      out.close();
                      }catch(IOException e)
                      {
                                System.out.println("Error in closing file: " + e.getMessage());
                      }
                }
            }
    
             public static void main (String[] args) 
            {
                  ModificaXML modifica = new ModificaXML (args[0]);
                  modifica.modifica();
             }
      }

    Ricevo come eccezione:
    Exception in thread "main" java.lang.NullPointerException
    at ModificaXML.modifica(ModificaXML.java:117)
    at ModificaXML.main(ModificaXML.java:128)

    Come mai?

  2. #2
    Utente di HTML.it L'avatar di MMarzia
    Registrato dal
    Mar 2001
    Messaggi
    1,781
    bobix, la prossima volta come da regolamento specifica il linguaggio nel titolo del 3d, includi il codice nel tag [*CODE] codice [*/CODE] (senza asterischi) ed utilizza titoli più significativi
    io sono festosamente cicciottello :: e. cartman

    t'amo senza sapere come, nè quando nè da dove,
    t'amo direttamente senza problemi nè orgoglio:
    così ti amo perchè non so amare altrimenti

  3. #3
    A parte che a leggere tutta sta pappardella dopo 3 riche di codice non ci capisco niente, poi dire quale sia la riga 117, cioè quella che ti dà l'errore?
    23-08-2005: Udinese in cémpions lìg
    Questa estate l'ho passata a Tallin

  4. #4
    Originariamente inviato da pippo75
    A parte che a leggere tutta sta pappardella dopo 3 riche di codice non ci capisco niente, poi dire quale sia la riga 117, cioè quella che ti dà l'errore?
    infatti.. che pretese...


    segnala la riga 117 qual'è

  5. #5
    Utente di HTML.it L'avatar di Angelo1974
    Registrato dal
    Feb 2003
    Messaggi
    1,107
    Da quanto ho visto la riga 117 coorsponde a out.close(); mi sa che l'oggetto out è nullo; non ho controllato bene il codice tu sei sicuro di averlo istanzioato e di non averlo, poi, reso nullo?
    Se vuoi trovare l'arcobaleno, devi sopportare la pioggia

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2004
    Messaggi
    214
    Originariamente inviato da Angelo1974
    Da quanto ho visto la riga 117 coorsponde a out.close(); mi sa che l'oggetto out è nullo; non ho controllato bene il codice tu sei sicuro di averlo istanzioato e di non averlo, poi, reso nullo?
    Come faccio a renderlo nullo?

    P.S.: chiedo scusa per tutti i disagi che ho creato

  7. #7
    Utente di HTML.it L'avatar di Angelo1974
    Registrato dal
    Feb 2003
    Messaggi
    1,107
    Guarda questo pezzo di codice; l'ho guardato meglio solo ora:

    BufferedWriter out = null;

    try
    {
    /*
    ISTANZIAMO LA CLASSE XMLOutputter
    CHE CI PERMETTE DI FORMATTARE IL
    FILE XML.
    /**/
    XMLOutputter xout = new XMLOutputter();
    xout.setIndent(true);
    xout.setNewlines(true);

    /*
    CON QUESTA ISTRUZIONE SCRIVIAMO
    IL DOCUMENTO documento IN UN
    BufferedWriter CHE CREA IL FILE
    TRAMITE UN FileWriter
    /**/
    xout.output(documento,out);
    }catch(IOException e)
    {
    System.out.println("Error in producing file: " + e.getMessage());
    }finally
    {
    try
    {
    out.close();
    Come vedi tu istanzi out e lo setti pasri a null, dopo di che fai out.close() essendo out nullo --> NullPointerException; devi vedere se effettivamente ti serve questo out nel tuo metodo e se sì quando e come devi istanziarlo correttamente.
    Ciao
    Se vuoi trovare l'arcobaleno, devi sopportare la pioggia

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.