Newsgroup: it.comp.java
Titolo: java.lang.reflect.InvocationTargetException

Salve a tutti.
Io ho una classe principale che mi collega all'As400:
                Class.forName("com.ibm.as400.access.AS400JDBCDriver");
		String url = "jdbc:as400://xxx.xxx.x.xxx";
		con = DriverManager.getConnection(url);
                connessione = con.createStatement();	
		dbmd = con.getMetaData();
		utente = dbmd.getUserName();
Poi con la Reflection a seconda dell'utente che si collega istanzio delle
classi in base al contenuto di un file, passando come parametri la
connessione e l'utente:
   Object[] parametri= new Object[2];
   parametri[0]= con;
   parametri[1]= utente;
 
   Object test=evt.getSource();
   Class paramsType[] = new Class[2]; // Vettore con il TIPO dei parametri 
   paramsType[0] = (parametri[0]).getClass();
   paramsType[1] = (parametri[1]).getClass();
   Class classeP01 = Class.forName(classeBottone[0].trim());
   Constructor costruttoreP01=classeP01.getConstructor(paramsType);
   Object istanzaP01=costruttoreP01.newInstance(parametri);
Ora funziona tutto magnificamente la prima volta che istanzio una certa
classe, poi se la chiudo, torno alla classe iniziale e poi istanzio per la
seconda volta la classe istanziata precedentemente mi da l'errore
segnalato nel subject (java.lang.reflect.InvocationTargetException).
Cosa sbaglio?
Grazie a chi vorrà rispondermi.
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Cosa sbaglio?
Quell'eccezione ti dice solo che il codice invocato via reflection ha 
sollevato un'eccezione. La prima cosa da fare e' di solito vedere 
precisamente quale eccezione - InvocationTargetException ha un metodo 
getCause() che serve a quello.
-- 
Life's something u don't get out alive..
ObjectZone - 
http://space.tin.it/computer/csadun

 getCause() che serve a quello.
Perfetto: ho fatto un passo avanti ... e uno indietro :o)
Spero di non essere troppo prolisso.
getCause() mi dice: java.lang.NullPointerException
Insomma non ha trovato record ...
Mi sono spostato allora a ragionare sulla classe chiamata, il costruttore
di questa mi carica in prima battuta una combobox.
Questa cosa funziona il primo giro, il secondo niente.
Ho messo un System.out.println dopo ogni riga per capire dove "cade".
public SchedeFornitori(AS400JDBCConnection con, String utente) {
		this.con=con;
		this.utente=utente;
		setBounds(100, 50, 100, 50);
		sfile.setFont(new Font("Courier", 1, 12));
		System.out.println(con);
Qui sia la prima che la seconda volta mi scrive nella shell del dos la
stessa stringa, che vuol dire, suppongo, che ha ricevuto l'oggetto
AS400JDBCConnection regolarmente.
Idem per:
               String sTaprf = "SELECT * FROM ...WHERE KPIDU='"	+utente+"'
AND ecc.;
		System.out.println(sTaprf);
Funziona benissimo, e l'utente ricevuto come parametro č corretto.
Viceversa:
                        stTaprf = con.createStatement();		
			System.out.println(stTaprf);
			ResultSet rTaprf = stTaprf.executeQuery(sTaprf);
			System.out.println(rTaprf);
La prima volta mi stampano:
STMT0002
CRSR0002
La seconda niente (di conseguenza non caricano la combo box, danno
nullpoint, ecc.).
In sintesi: il metodo createStatement la prima volta che viene istanziata
la classe sembra funzionare, la seconda volta fa cilecca. E' possibile?
Ti(vi) ringrazio per l'attenzione e per l'aiuto dato finora.
Parafrasando (bello il sito):
"Naturalmente, ogni errore in questa e-mail puo' essere spiegato dal fatto
che č stata preparata con l'aiuto di un computer. " ;o)))


 getCause() mi dice: java.lang.NullPointerException
Usa getCause().printStackTrace(), cosi' vedi esattamente la riga di codice 
dove la NullPointerException viene sollevata, il che ti dovrebbe dare 
un'idea di che cosa precisamente sia null (e non dovrebbe esserlo).


 un'idea di che cosa precisamente sia null (e non dovrebbe esserlo).
Ti ringrazio: ho risolto.
Ad un certo punto chiudevo inavvertitamente la connessione.
