Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it L'avatar di Kilin
    Registrato dal
    Mar 2003
    Messaggi
    453

    Errore nell'eseguire un .jar, da netbeans invece il progetto esegue

    Ciao ragazzi,

    mi sono accorto di un problemino... sto lavorando con netbeans, e sono solito eseguire la mia applicazione dall'ambiente netbeans. Tempo fa avevo provato a doppio cliccare il .jar che netbeans genera, ed avevo visto che eseguiva correttamente.

    Oggi ho riprovato, e doppio cliccando (o facendo java -jar MioProg.jar) ottengo degli errori e l'applicazione non parte.. eseguendo da netbeans tutto tranquillo invece.

    L'unica cosa che ho fatto di recente è stata installare JFreeChart, ed infatti l'errore che ottengo nomina una classe di questa api:

    codice:
    Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/jfree/data/general/DefaultPieDataset
    	at java.lang.Class.getDeclaredMethods0(Native Method)
    	at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
    	at java.lang.Class.getDeclaredMethod(Unknown Source)
    	at java.awt.Component.isCoalesceEventsOverriden(Unknown Source)
    	at java.awt.Component.access$500(Unknown Source)
    	at java.awt.Component$3.run(Unknown Source)
    	at java.awt.Component$3.run(Unknown Source)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.awt.Component.checkCoalescing(Unknown Source)
    	at java.awt.Component.<init>(Unknown Source)
    	at java.awt.Container.<init>(Unknown Source)
    	at java.awt.Window.<init>(Unknown Source)
    	at java.awt.Frame.<init>(Unknown Source)
    	at java.awt.Frame.<init>(Unknown Source)
    	at javax.swing.JFrame.<init>(Unknown Source)
    	at green.GreenBuilding.<init>(GreenBuilding.java:35)
    	at green.GreenBuilding$16.run(GreenBuilding.java:823)
    	at java.awt.event.InvocationEvent.dispatch(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)
    Caused by: java.lang.ClassNotFoundException: org.jfree.data.general.DefaultPieDataset
    	at java.net.URLClassLoader$1.run(Unknown Source)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at java.net.URLClassLoader.findClass(Unknown Source)
    	at java.lang.ClassLoader.loadClass(Unknown Source)
    	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    	at java.lang.ClassLoader.loadClass(Unknown Source)
    	... 25 more
    non so, ho fatto anche un'altra prova con JFreeChart, installato in modo analogo a quanto fatto per questo progetto, e questa prova parte al doppio click sul jar...

    che può essere? Stavo guardando se trovavo qualcosa tipo un classpath particolare o argomenti che netbeans aggiunge, ma non sto vedendo niente di che...

    vi ringrazio!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Errore nell'eseguire un .jar, da netbeans invece il progetto esegue

    Originariamente inviato da Kilin
    Oggi ho riprovato, e doppio cliccando (o facendo java -jar MioProg.jar) ottengo degli errori e l'applicazione non parte..

    codice:
    Exception in thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/jfree/data/general/DefaultPieDataset
    Come al solito la questione è sempre la stessa .... far trovare le classi alla JVM.
    Se si "lancia" direttamente il jar tramite -jar, la variabile di ambiente CLASSPATH non conta più e nemmeno l'opzione -classpath verrebbe considerata!

    I modi per far trovare classi in jar esterni al tuo jar principale alla fin fine in questo caso sono 2:
    a) Nel "manifest" del tuo jar specifichi l'attributo Class-Path per indicare gli URL "relativi" (es. lib/pippo.jar) ai jar esterni.
    oppure
    b) Usi il meccanismo di "extension" e metti i jar esterni nella lib/ext di un JRE.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di Kilin
    Registrato dal
    Mar 2003
    Messaggi
    453
    ma non dovrebbe occuparsene netbeans? Perchè sennò nell'altro test che ho fatto (con la stessa libreria e la stessa struttura di directories) è partito tutto tranquillamente senza che avessi modificato alcunchè?

    ad ogni modo, proviamo a venirne a capo...

    Le librerie le ho aggiunte in netbeans...

    nella cartella dist (dove viene generato il .jar) c'è una cartella lib in cui vengono riportati tutti i .jar delle librerie che ho specificato..

    ho provato a modificare manualmente il file manifest (quello che sta nella dir principale del progetto di netbeans) aggiungendo la direttiva CLASS-PATH:

    codice:
    CLASS-PATH: lib/jfreechart-1.0.13.jar lib/jcommon-1.0.16.jar lib/junit.jar lib/gnujaxp.jar lib/iText-2.1.5.jar lib/jfreechart-1.0.13-swt.jar lib/junit.jar lib/swtgraphics2d.jar lib/toplink-essentials.jar
    ma non cambia nulla...

  4. #4
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Devi aggiungere la libreria usando le funzioni di NetBeans e non mettendo file in cartelle a caso! È da tanto che non lo uso ma dovrebbe essere in libreries, dentro le proprietà del progetto!
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Kilin
    Le librerie le ho aggiunte in netbeans...
    Non vuol dire tutto .... serve di certo a NetBeans per compilazione/avvio tramite l'IDE. Ma non è detto che centri direttamente con quando l'applicazione "vive" per conto suo.

    Originariamente inviato da Kilin
    ho provato a modificare manualmente il file manifest (quello che sta nella dir principale del progetto di netbeans) aggiungendo la direttiva CLASS-PATH:

    codice:
    CLASS-PATH: lib/jfreechart-1.0.13.jar jcommon-1.0.16.jar junit.jar,gnujaxp.jar iText-2.1.5.jar jfreechart-1.0.13-swt.jar junit.jar swtgraphics2d.jar toplink-essentials.jar
    I nomi degli attributi sono case insensitive, normalmente si mette Class-Path ma anche CLASS-PATH appunto dovrebbe essere ok.

    Ma a parte questo, dalla tua specifica risulta che solo jfreechart-1.0.13.jar è sotto una "lib". E gli altri no??

    E inoltre, dalle specifiche dei jar:

    * Line length:
    No line may be longer than 72 bytes (not characters), in its UTF8-encoded form. If a value would make the initial line longer than this, it should be continued on extra lines (each starting with a single SPACE).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Utente di HTML.it L'avatar di Kilin
    Registrato dal
    Mar 2003
    Messaggi
    453
    codice:
    Devi aggiungere la libreria usando le funzioni di NetBeans e non mettendo file in cartelle a caso! È da tanto che non lo uso ma dovrebbe essere in libreries, dentro le proprietà del progetto!
    ma infatti ho aggiunto tutto da netbeans, non ho messo cartelle "a caso"!

    codice:
    Ma a parte questo, dalla tua specifica risulta che solo jfreechart-1.0.13.jar è sotto una "lib". E gli altri no??
    sì, avevo fatto un edit con scritto che m'ero sbagliato, ora ho aggiunto i lib/ mancanti, ma non cambia niente..

  7. #7
    Utente di HTML.it L'avatar di Kilin
    Registrato dal
    Mar 2003
    Messaggi
    453
    allora, ho guardato l'altra demo che avevo fatto, e il manifest nel jar riporta:

    codice:
    Class-Path: lib/jcommon-1.0.16.jar lib/jfreechart-1.0.13.jar
    quindi bastano quei due jar per i grafici, gli altri l'ho tolti dalle librerie... inoltre ho riportato il manifest del progetto che non funziona allo stato originario (ho tolto la mia aggiunta classpath) ed ho guardato che manifest genera netbeans in automatico, ed è questo:

    codice:
    Class-Path: lib/toplink-essentials.jar lib/toplink-essentials-agent.ja
      r lib/jcommon-1.0.16.jar lib/jfreechart-1.0.13.jar
    e ancora non funziona

    EDIT: la classe che non trova è in lib/jfreechart-1.0.13.jar, che compare correttamente nel classpath.... voi ci capite qualcosa?' :master:

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,323
    Una domanda che, mi pare, nessuno ha fatto: nella directory dove hai il file .JAR che stai cercando di avviare, hai anche la cartella "lib" con tutti gli altri JAR dentro?

    Ricorda una cosa: la cartella "dist" che genera NetBeans contiene tutto ciò che è necessario per l'esecuzione dell'applicazione... questo significa che non è sufficiente prendere il file JAR, ma è necessario portarsi appresso anche tutta la cartella "lib".


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    Utente di HTML.it L'avatar di Kilin
    Registrato dal
    Mar 2003
    Messaggi
    453
    si, la cartella "lib" c'è, la crea netbeans, e dentro c'è il jar che contiene la classe che da il primo errore all'avvio del mio .jar... lo so che serve la classe lib, non è che ho tirato via il mio jar ed ho provato ad eseguirlo a parte...! io compilo tutto da netbeans, che mi genera la cartella dist, e tutto il resto vado lì dentro e doppio clicco il jar, o faccio java -jar Nome.jar, ed ottengo quell'errore... non capisco, netbeans ci mette tutto quello che serve in quella cartella, il manifest sembra che venga generato ammodino, perchè non trova le classi?

  10. #10
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,323
    Ed eseguendo direttamente da NetBeans, l'applicazione funziona?


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

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.