Oppure

Loading
13/09/10 16:00
Goldeneye
Ciao a tutti :) mi sono appena iscritto al forum perchè ho decisamente un problema che non riesco a risolvere e spero che voi possiate aiutarmi :)
Il problema è il seguente:
Ho creato un programma in Java con l'utilizzo di Netbeans, il programma è completato e attraverso Netbeans funziona perfettamente, però, dopo averlo compilato e eseguito da Prompt di MSDOS mi da il seguente errore:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Grafica.SimpleTableDemo.<init>(SimpleTableDemo.java:42)
at Grafica.Finestra3.PadMouseClicked(Finestra3.java:192)
at Grafica.Finestra3.access0(Finestra3.java:34)
at Grafica.Finestra3.mouseClicked(Finestra3.java:93)
at java.awt.AWTEventMulticaster.mouseClicked(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)


Il pezzo di sorgente del programma "sotto accusa" è il seguente
> package Grafica;
> import java.io.*;
> import java.util.logging.Level;
> import java.util.logging.Logger;
>
>
> import javax.swing.JFrame;
> import javax.swing.JPanel;
> import javax.swing.JScrollPane;
> import javax.swing.JTable;
> import java.awt.Dimension;
> import java.awt.GridLayout;
> import java.awt.event.MouseAdapter;
> import java.awt.event.MouseEvent;
> import java.text.DateFormat;
> import java.text.SimpleDateFormat;
> import java.util.Date;
> /**
> *
> * Finestra con Tabella elenco file e descrizione
> */
>
> public class SimpleTableDemo extends JPanel {
> private boolean DEBUG = false;
> File di = new File("../Calcolatore2/");
> File fl[] = di.listFiles();
> FileInputStream fis;
> FileOutputStream file;
> String[] nomeFile;
> String[] nomeEste;
> int i, j;
> int sottrai=0;
> int con=0;
> int count=0;
> int[] dimen;
> String str="";
> String list="";
> String[] dataModif;
>
> public SimpleTableDemo() {
> super(new GridLayout(1,0));
> nomeFile=new String[fl.length];  <--- Questa è la riga 42
> nomeEste=new String[fl.length];
> dimen= new int[fl.length];
> dataModif= new String[fl.length];
> DateFormat sdf = DateFormat.getDateInstance(DateFormat.SHORT);
>
> for (i=0; i < fl.length; i++){
> nomeFile[con]="";
> String nome="";
> Boolean conto=false;
> if (fl[i].length()!=0) {
> for (j=16; j < fl[i].toString().length(); j++){
> String car="";
> car=car+fl[i].toString().charAt(j);
> if(car.equals(".") && j!=16 ){
> nome="";
> conto=true;
> }
> nome=nome+car;
> if (conto) nomeEste[con] = nome;
> else nomeFile[con]=nome;
> }
> Date d = new Date(fl[i].lastModified());
> dataModif[con]=sdf.format(d).toString();
> dimen[con]=(int) fl[i].length();
> con=con+1;
> }
>
> }
> ...


Parlando col mio prof dell'università mi ha detto che probabilmente l'errore è derivante da File fl[] = di.listFiles(); il quale potrebbe risultare Null
Mi ha suggerito di inizializzarlo nel costruttore e non nella dichiarazione ma non sono riuscito, qualcuno può aiutarmi? :)
Grazie
aaa
13/09/10 17:39
tasx
Ciao!!
Allora il problema non è per colpa tua ma per cola di netbeans :yup::yup:
infatti quando avvii il programma da netbeans gli imposta un path di esecuzione diverso da quello che gli viene impostato quando viene avviato da riga di comando...

il mio consiglio sarebbe quello di utilizzare percorsi standard, come ad
esempio:
System.getProperties("user.home");

così ottieni il path della cartella home dell'utente...
cmq se guardi la documentazione trovi tutto il resto:

download.oracle.com/javase/7/docs/api/java/lang/…()

ciaociao!!
aaa
13/09/10 18:28
Goldeneye
Ancora non ho risolto :d
Ho provato in due maniere seguendo il tuo consiglio, prima al posto di

File di = new File("../Calcolatore2/");


ho messo
File di = new File("C:/");


Ma non ha funzionato, allora ho provato con l'utilizzo del System:
String name =(String) System.getProperty("user.dir");
File di = new File(name);


Anche con user.home il risultato è lo stesso.
Però continua a dare lo stesso errore, ovviamente solo in compilazione mentre su Netbeans gira che è una meraviglia.
Altri suggerimenti? :(
aaa
13/09/10 19:00
tasx
Ciao!

Allora io ho provato con questo codice e funziona benissimo...
    public static void main(String[] args) {
        // TODO code application logic here
        File f = new File("/home/edoardo/");
        System.out.println(f.listFiles().length);
    }


sicuro di non sbagliare qualcosa??

ciaociao!! :k::k::k:
aaa