Newsgroup: it.comp.java
Titolo: .class e .jar

Secondo voi, perché se lancio il programma che ho scritto con
"javaw mioPackage.miaMainClass"
si avvia tutto correttamente, mentre se lancio
"javaw - jar mioJar"
non succede nulla?
In fase di compilazione con NetBeans non vengono restituiti messaggi 
d'errore e il file .jar viene creato correttamente e contiene tutte le 
classi del programma.
Il problema si è presentato dopo aver aperto il progetto con NetBeans 5 
beta, che mi ha subito restituito un messaggio d'errore collegato alla 
libreria swing che presiede a Matisse, la nuova interfaccia di NetBeans.
Aperto nuovamente con NetBeans 4.1 e ricompilato, il .jar non funziona 
più. (Anche se ricompilato con 5 beta non funziona)
A qualcuno è capitata la stessa cosa?

Non ho capito benissimo qual'è il tuo problema anche perchè non uso
più NetBeans ma Eclipse. Comunque una possibile causa di errore non
potrebbe essere nel MANIFEST file? Se non ricordo male dovresti
inserire una linea per indicare qual'è la classe col main da lanciare
quando viene avvitao il file Jar.
Spero di esserti stato d'aiuto.

stefano...@gmail.com
 ha scritto:

Ho controllato anche il file MANIFEST.MF, proprio perché è stata la 
prima idea che mi è balenata in testa. L'ho anche sostituito manualmente 
ma non è cambiato nulla.
Non capisco perché se lancio direttamente il .class tutto funziona ma se 
lancio il .jar non si apre nulla! e nenache viene restituito un 
messaggio d'errore. proprio nulla.
Non che mi preoccupi, il software funziona anche se lanciato dal .class, 
l'unico neo è che non so come evitare che si apra una funestra di prompt 
da windows quando lancio il file .bat "javaw mioPackage.miaMainClass".
Grazie comunque per l'aiuto a Stefano.



Non uso netbeans (almeno non ancora), ma il comportamento che descrivi mi
puzza tanto di manifest mancante.
Quando impacchetti tutte le tue classi in un .jar (a proposito, quando usi
l'opzione -jar devi specificare anche l'estensione del file: mioJar.jar) non
fai altro che creare un archivio strutturato in formato "zip". Quello che lo
rende eseguibile è un file chiamato MANIFEST.MF nella directory /META-INF.
Questo non è altro che un file di testo contenente varie informazioni, tra
cui anche la classe da avviare. Netbeans dovrebbe essere in grado di
creartelo se configurato in modo opportuno, ma se preferisci puoi anche
creartelo con un normalissimo editor di testo. Questo è il contenuto più
comune:
------------------------- /META-INF/MANIFEST.MF
Manifest-Version: 1.0
Main-Class: mioPackage.miaMainClass
-------------------------
Vi sono altre opzioni, alcune da usare solo come "etichette" (tipo autore,
versione, nome della libreria, ecc...) altre forniscono funzioni utili, come
l'indicazione delle librerie "legate" alla tua applicazione (evitandoti così
di specificarle sulla riga di comando). Maggiori info le puoi trovare qui:
http://java.sun.com/j2se/1.5.0/docs/guide/jar/jar.html
HTH
-- 
Fermiamo scientology prima che sia troppo tardi!!!
http://xenu.com-it.net
 - 
http://xenu.freewinds.cx/
 - 
http://www.xenu.net/
(per rispondere personalmente leva IlDitoDalCulo)

 puzza tanto di manifest mancante.
Grazie per la tua risposta e per il link. Come ho già risposto a Stefano 
il file MANIFEST.MF è iscritto correttamente nel file .jar, questo ne è 
il contenuto:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.6.2
Created-By: 1.5.0_05-b05 (Sun Microsystems Inc.)
Main-Class: jest.Main
X-COMMENT: Main-Class will be added automatically by build
Esattamente quello di una versione precedente che funziona se lanciata 
dal .jar.