si!!!
Ok, ultima prova:
1) Prendi la cartella "dist" del progetto di NetBeans e copiala da qualche altra parte
2) Dal prompt dei comandi, portati dentro la cartella "dist" appena copiata
3) Dai il comando "java -jar NomeDelFile.jar" (dove, al posto di "NomeDelFile" ci metti, ovviamente, il nome del tuo file jar).
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
Facciamo il punto?Originariamente inviato da Kilin
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?
Ora, non importa tanto quale sia la directory dove sta il tuo jar principale, non importa tanto chi ha creato la lib e nemmeno se e quanto di tutto questo sia correlato/contenuto nel "progetto" nell'IDE.
Quando a runtime la applicazione "vive" per conto suo, conta solo questo (supponendo l'uso della jcommon e della jfreechart):
E il manifest è scritto correttamente (note sul limite dei 72 caratteri e il tassativo newline al fondo) con:codice:directory_xyz_non_importa/ | +-- tua_applicazione.jar +-- lib/ | +-- jcommon-1.0.16.jar +-- jfreechart-1.0.13.jar
Class-Path: lib/jcommon-1.0.16.jar lib/jfreechart-1.0.13.jar
Tutto questo è corretto e deve funzionare.
Fatto, non cambia nienteOk, ultima prova
A me sembra che sia tutto corretto, ma non va comunque...Facciamo il punto?
Compilo (Clean and build main project), nessun errore, eseguo da netbeans, parte tutto per bene, quindi il programma è corretto...
Al manifest non faccio modifiche, lascio che lo generi netbeans.
Vado a vedere cosa genera, e trovo la situazione che dici tu:
A questo punto se doppio clicco il mio jar non succede niente. Allora vado da terminale, mi posiziono in "dist", lancio "java -jar GreenBuilding.jar", e ottengo:codice:dist/ | +-- GreenBuilding.jar +-- lib/ | +-- jcommon-1.0.16.jar +-- jfreechart-1.0.13.jar +-- toplink-essentials.jar +-- toplink-essentials-agent.jar
la classe "DefaultPieDataset" che non trova, riesco a vederla all'interno del jfreechart-1.0.13.jar che sta nella cartella lib, nel percorso \org\jfree\data\general.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:36) at green.GreenBuilding$16.run(GreenBuilding.java:824) 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
Vado a vedere il file manifest del mio jar, ed è:
la new line in fondo c'è, la riga classpath viene spezzata, penso per il discorso della lunghezza, e mandata a capo su una nuova riga che inizia con spazio.codice:Manifest-Version: 1.0 Ant-Version: Apache Ant 1.8.0 Created-By: 1.6.0_14-b08 (Sun Microsystems Inc.) Main-Class: green.GreenBuilding Class-Path: lib/toplink-essentials.jar lib/toplink-essentials-agent.ja r lib/jcommon-1.0.16.jar lib/jfreechart-1.0.13.jar X-COMMENT: Main-Class will be added automatically by build
ho provato anche a creare un nuovo progetto di sana pianta, copiarci i sorgenti dell'altro ed aggiungere da capo le librerie, ma ottengo lo stesso comportamento
ditemi che ci capite qualcosa voi perchè io sto andando fuori di testa, non so più che provare....
EDIT: ma netbeans come lo lancia il programma? se riusciamo a vedere come lo lancia, cosa gli passa, non so, magari si può replicare all'esterno dell'IDE...
Secondo me è qui il punto. So che può sembrare una domanda stupida, ma cerco di escludere tutte le cause possibili: sei sicuro di prendere il JAR del progetto giusto? Te lo dico perchè oggi è una giornata un po' così per tutti... ho commesso proprio questo stesso errore stamattina dopo che, per 15 minuti, non vedevo applicare le modifiche che facevo ad un progetto... stavo compilando il programma sbagliato!Originariamente inviato da Kilin
EDIT: ma netbeans come lo lancia il programma? se riusciamo a vedere come lo lancia, cosa gli passa, non so, magari si può replicare all'esterno dell'IDE...
Se sei certo al 100% di prendere i file giusti, l'unico altro motivo per un funzionamento di questo tipo è una installazione non funzionante della JRE che viene usata di default.
Come ha già detto andbin: quella configurazione deve funzionare, non ci sono se e non ci sono ma.
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
sì, sono sicuro che è il jar corretto ed il progetto corretto quello che sto compilando..
non so, che si può provare a fare per vedere dov'è il problema?
Prova a buttare tutto dentro ad un file ZIP (o RAR) e posta un link da cui scaricarlo... l'unica è provare ad eseguirlo su una macchina diversa.
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
RAGAZZI HO RISOLTO
anche se non ho capito bene che è successo aspetto voi per un'analisi
in pratica, i primi giorni di prove java avevo provato ad interfacciarmi a MySql con il java connector/j. Non sapevo bene come installare le librerie e come trattare i .jar, quindi feci una cosa che probabilmente vi farà accapponare la pelle , ovvero scompattai il .jar nella cartella sources del mio progetto (senza guardare ammodo cosa ci fosse dentro), compilai, e tutto andava bene.
Ora stavo sbattendo la testa nel muro, quando ho notato questa 'bruttura' che avevo fatto: ho rimosso dal progetto tutto quel che riguardava il connector/J, l'ho importato come libreria Jar, ricompilato.. e per magia il mio Jar ora non da alcun problema, si avvia al doppio click senza errori...
ora, sinceramente io non ho capito come questa cosa possa aver dato noia, per giunta causando errori relativi ad un'altra libreria.. fatto sta che ora funziona
che ne dite?
ps: vi ringrazio tutti cmq per esser sempre così pazienti e disponibili