Newsgroup: it.comp.java
Titolo: NoClassDefFoundError "strano"

Ciao
ho un problema per me insolito.
Eseguendo un codice lato server, mi da un NoClassDefFoundError
su una classe che in realtà è presente nel file JAR incluso
nel classpath. Da notare che in precedenza nel codice uso
un'altra classe sempre presente nello stesso file e non da problemi
(per caricare un design file di tipo JasperReport).
Questo è il codice:
	JasperPrint jasperPrint =
JasperFillManager.fillReport(jasperReport,parameters,con);
	JasperViewer.viewReport(jasperPrint,false);
(dovrebbe riempire il design file caricato prima con i dati).
L'errore che tira fuori è questo:
	java.lang.NoClassDefFoundError:
net/sf/jasperreports/engine/fill/JRVerticalFiller
	at
net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:67)
	at ....
Appunto, la cosa strana è che la classe JRFiller, JRVerticalFiller è
inclusa
nello stesso file JAR che ho usato con successo per caricare il file
prima...
Da cosa può dipendere questo errore?

 
Ti consiglio di veririficare *bene* il classpath dell'applicazione.
Per aiutarti in questo compito, prova a lanciare l'applicazione
con l'opzione -verbose della JVM, in modo da seguire il processo
di caricamento delle classi e verificare quale di queste non viene
trovata: alle volte il solo stack trace generato dall'eccezione
non ti "racconta tutta la storia" ;)
Saluti
Roberto

 non ti "racconta tutta la storia" ;)
intanto grazie del suggerimento. ho attivato il verbose, ma non
sono cambiati i messaggi.
per il classpath:
nel classpath (di Lotus, usa la sua JVM) ho messo il file JAR che
contiene
tutte le classi, sia la prima che invoco con successo, sia quella che
mi provoca l'errore.
siccome l'ho spostato, da esecuzione lato client a lato server,
qualcosa
sicuramente non è impostato bene, ma nn riesco a capire...essendo
nella stessa
libreria le classi corretta e che da problemi!!!

 sono cambiati i messaggi.
mi ero sbagliato! in realtà la prima volta nn aveva scritto nulla di
+,
dalal seconda in poi si.
questo il risultato:
06/10/2005 12.10.10   Agent  error: [Loaded
net.sf.jasperreports.engine.JasperRunManager from
C:\Lotus\Domino\jvm\lib\ext\jasperreports-0.6.8.jar]
06/10/2005 12.10.10   Agent  error: [Loading superclasses of
net/sf/jasperreports/engine/JasperRunManager]
06/10/2005 12.10.10   Agent  error: [Preparing
net/sf/jasperreports/engine/JasperRunManager]
06/10/2005 12.10.10   Agent  error: [Signaling in VM:
java/lang/NoClassDefFoundError, message:
net/sf/jasperreports/engine/fill/JRVerticalFiller]
06/10/2005 12.10.10   Agent  error:  at
net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:67)
06/10/2005 12.10.10   Agent  error:  at
net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:247)
06/10/2005 12.10.10   Agent  error:  at
net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:163)
06/10/2005 12.10.10   Agent  error:  at
net.sf.jasperreports.engine.JasperRunManager.runReportToPdfFile(JasperRunManager.java:89)
06/10/2005 12.10.10   Agent  error:  at
JavaAgent.NotesMain(JavaAgent.java:284)
06/10/2005 12.10.10   Agent  error:  at
lotus.domino.AgentBase.runNotes(Unknown Source)
06/10/2005 12.10.10   Agent  error:  at
lotus.domino.NotesThread.run(NotesThread.java:215)
06/10/2005 12.10.10   Agent  error: java.lang.NoClassDefFoundError:
net/sf/jasperreports/engine/fill/JRVerticalFiller
06/10/2005 12.10.10   Agent  error:  at
net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:67)
06/10/2005 12.10.10   Agent  error:  at
net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:247)
06/10/2005 12.10.10   Agent  error:  at
net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:163)
06/10/2005 12.10.11   Agent  error:  at
net.sf.jasperreports.engine.JasperRunManager.runReportToPdfFile(JasperRunManager.java:89)
06/10/2005 12.10.11   Agent  error:  at
JavaAgent.NotesMain(JavaAgent.java:284)
06/10/2005 12.10.11   Agent  error:  at
lotus.domino.AgentBase.runNotes(Unknown Source)
06/10/2005 12.10.11   Agent  error:  at
lotus.domino.NotesThread.run(NotesThread.java:215)
Con le prime quattro righe che sono state stampate solo con verbose
attivo...
che dici?

 C:\Lotus\Domino\jvm\lib\ext\jasperreports-0.6.8.jar]
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Non conosco Domino, ma questo jar viene caricato dalla
directory standard delle estensioni della JVM: ce
l'hai messo tu? In caso contrario, puo' essere che tu,
nell'ambiente di sviluppo, stia utilizzando una versione
diversa di JasperReports, la cui libreria non viene
"vista" quando fai il deploy in produzione, perche'
"mascherata" da quella caricata dalle estensioni della JVM.
Prova a verificare
Saluti
Roberto

 Prova a verificare
il file è caricato dalla directory della JVM che è dentro Domino.
Ce l'ho messo io.
In realtà avevo sviluppato in locale modello client, poi ho cacciato
tutto sul server e sto facendo le modifiche necessarie
per farlo funzionare lato server. Ma le librerie le ho messe
io tali e quali a quelle qua sul mio pc.
(qui sul pc va..)

 (qui sul pc va..)
Potrebbe anche essere che tu ti stia dimenticando di
aggiungere una libreria dalla quale JasperReports dipende.
Roberto

 aggiungere una libreria dalla quale JasperReports dipende.
giusta osservazione.
ho controllato, ma ho messo nel path le stesse librerie che
ho sul client.
:-(

de12261 wrote:

Evidentemente no, perche' altrimenti funzionerebbe! ;)
In questi casi ci si trova di fronte (nel 99,99999% dei casi)
ad un episodio della serie "vedo quello che dovrebbe essere
ma non quello che realmente e'"... ;)
L'ambiente di sviluppo e' *veramente* configurato
*esattamente* come quello di produzione? Fai una ricerca di tutti
i jar presenti sul server, controllane la collocazione nel file
system e verifica che non vi siano conflitti.
Saluti
Roberto

penso che tu abbia ragione, ma il problema è che
le librerie jar necessarie le ho copiate e incollate
dal pc di sviluppo al server.
i path e notes.ini li ho impostati.
non so proprio dove andare a parare...
anche perchè, appunto, le due classi da me usate sono nella
stessa libreria e con una funzia, con l'altra no.

 stessa libreria e con una funzia, con l'altra no.
Se non va l'errore c'e', ed e' sicuramente tuo... ;)
Scommetti che quando troverai la causa del mafunzionamento ti mangerai
le mani e ti darai del co****ne da solo?! [In dieci anni di "onorata"
carriera con Java, un paio di volte e' capitato anche a me...] ;)
Ciao
Roberto

 carriera con Java, un paio di volte e' capitato anche a me...] ;)
sicuramente, anche perchè sono ad un livello inferiore al beginner...
quindi...
:-(