|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Oct 2000
Messaggi: 432
|
Java --> Jar
Vorrei comprimere una applicazione Java e farla autoeseguibile: mi pare che ciò si possa fare utilizzando jar... ma come
Sono riuscito a comprimere tutto ma non riesco a far funzionare l'autoeseguibile. Come si fa grazie P.S ho un JTextPane associato ad un JScroolPane : come devo fare affichè quello che scrivo sul JTextPane sia sempre visibile? (lo scroll funziona ma alla rovescia!!) |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
|
devi specificare un manifest file (semplicemente un file di testo) con dentro:
Main-Class: <nome-classe-che-contiene-il-main> e poi si fa (se non ricordo male) jar -cvfm <nome-manifest_file> <nome-file-jar> <file-da-compattare> |
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Oct 2000
Messaggi: 432
|
Quote:
grazie comunque |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Oct 2000
Messaggi: 432
|
ho creato un Manifest.mf:
Manifest-Version: 1.0 Created-By: 1.4.1_01 (Sun Microsystems Inc.) Main-Class: Client ho compattato tutto con jar inserendo il manifest e tutto funziona ma quando vado a cliccare il file Client.jar ho il seguente errore: Could not find the main class. Program will exit! cosa devo fare!! lo stesso accade se specifico Client.class nel Manifest.mf |
![]() |
![]() |
![]() |
#5 |
Senior Member
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
|
no devi specificare il nome della classe senza l'estensione .class...
Per caso la classe con il main è dentro ad un package? Nel caso in cui sia dentro ad un package devi inserire il nome della classe completo stile java, cioé: <nome_package>.Client Fammi sapere |
![]() |
![]() |
![]() |
#6 | |
Senior Member
Iscritto dal: Oct 2000
Messaggi: 432
|
Quote:
|
|
![]() |
![]() |
![]() |
#7 |
Senior Member
Iscritto dal: Oct 2000
Messaggi: 432
|
il main fa parte di un package ed in particolare jchat.client.Client.class
quindi ho definito il file Manifest come: Manifest-Version: 1.0 Created-By: 1.4.1_01 (Sun Microsystems Inc.) Main-Class: jchat.client.Client e ho chiamato il comando jar nel seguente modo C:\jchat>jar -cvfm client\Client.jar client\Manifest.mf client\*.class client\immagini\*.* client\immagini\icone\*.* tutto funziona senza errori ma quando clicco su Client.jar si verifica lo stesso errore visto precedentemente |
![]() |
![]() |
![]() |
#8 | |
Senior Member
Iscritto dal: Jul 1999
Città: Torino
Messaggi: 2221
|
Quote:
|
|
![]() |
![]() |
![]() |
#9 |
Senior Member
Iscritto dal: Oct 2000
Messaggi: 432
|
ok adesso ci provo e domani ti faccio sapere
|
![]() |
![]() |
![]() |
#10 |
Senior Member
Iscritto dal: Oct 2000
Messaggi: 432
|
ho provato a modificare il file manifest in client.Client ma l'errore permane. Inoltre ho lanciato il comando jar da c:\ modificando il manifest in jchat.client.Client ma nulla è cambiato .
Cosa devo fare!!! Grazie comunque |
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Oct 2000
Città: Montreal (Canada)
Messaggi: 1309
|
Prova ad usare il jar da c: e in concomitanza a ciò usare il manifest con:
jchat.client.Client |
![]() |
![]() |
![]() |
#12 |
Bannato
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
|
Può darsi che dica una cosa che già hai fatto ma scrivo lo stesso perchè è un piccola "bizzarria" in cui mi sono imbattuto.
Il file di testo che contiene il manifest deve necessariamente terminare con un "ritorno a capo" altrimenti la jvm restituisce proprio un'eccezione "Could not find the main class". Ad esempio: [inizio] Main-Class: package.classname [fine] è "errato", mentre [inizio] Main-Class: package.classname [fine] funziona correttamente. Ciao. |
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Oct 2000
Messaggi: 432
|
ti ringrazio vivamente per il consiglio!!
adesso ci provo e ti farò sapere!!! |
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Oct 2000
Messaggi: 432
|
non so cosa fare!!
lancio il comando jar in questo modo C:\j2sdk1.4.1_01\bin>jar cvfm c:\jchat\client\Client.jar c:\jchat\client\Manifes t.mf c:\jchat\client\*.class c:\jchat\client\immagini\*.* c:\jchat\immagini\icon e\*.* e tutto funziona. il file Manifest è il seguente Main-Class: jchat.client.Client [invio] [invio] cosa devo fare? P.S la cartella jchat si trova in C |
![]() |
![]() |
![]() |
#15 |
Bannato
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
|
Carman, hai un pvt (se non hai già risolto).
Cascasse il modo adesso quel programma lo facciamo diventare un executable jar file! ![]() Ciao. |
![]() |
![]() |
![]() |
#16 | |
Senior Member
Iscritto dal: Oct 2000
Messaggi: 432
|
Quote:
ti riassumo un pò la situazione il progetto riguarda una chat basata su client e server progettata in multitread e con i socket. E' il progetto per un esame universitario. Nella cartella jchat, che si trova in c, c'è la cartella client e quella server. Innazitutto dedichiamoci al client. Nella cartella client ci sono i file .class, . java ed una cartella immagini e , al suo interno, una cartella icone. Il file Manifest.mf si trova in jchat\client cioè dove stanno i .class e .java. Il comando jar che eseguo è esattamente quello che ho scritto precedentemente e viene eseguito correttamente. Purtroppo, però, quando clicco sul file Client.jar la JVM mi segnale l'errore già descritto. Aiutami e te ne sarò grato!! |
|
![]() |
![]() |
![]() |
#17 |
Bannato
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
|
prova un po' così:
nel prompt dei comandi vai in c:\ e scrivi jar mcf c:\jchat\client\Manifest.mf PROVA.jar jchat/ che succede? |
![]() |
![]() |
![]() |
#18 |
Senior Member
Iscritto dal: Oct 2000
Messaggi: 432
|
ho definito il file manifest cosi:
Manifest-Version: 1.0 Created-By: 1.4.1_01 (Sun Microsystems Inc.) Main-Class: jchat.client.Client [invio] e dal prompt: C:\j2sdk1.4.1_01\bin>jar mcf c:\jchat\client\Manifest.mf c:\jchat\client\PROVA.jar c:\jchat\client\*.* tutto funziona ma l'errore permane |
![]() |
![]() |
![]() |
#19 |
Bannato
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
|
Per il manifest è sufficiente la sola scritta "Main-Class: ...[invio]", comunque quello che hai scritto non fa una grinza.
Dovresti comunque provare a scrivere esattamente la riga a cui accennavo: "jar mcf c:\jchat\client\Manifest.mf PROVA.jar jchat/ " con il prompt dei comandi su "c:\"; Lo dico perchè ho provato poco fa a fare un archivio jar con "c:\nomepackage\..." anzichè "nomepackage/" e mi dava un errore "could not find main class". Io sto qui finchè non funziona, ![]() Ciao. |
![]() |
![]() |
![]() |
#20 |
Senior Member
Iscritto dal: Oct 2000
Messaggi: 432
|
se scrivo c:\jar ... il comando non viene trovato!
se invece scrivo C:\j2sdk1.4.1_01\bin>jar mcf c:\jchat\client\Manifest.mf PROVA.jar jchat/ ho il seguente risultato jchat : impossibile trovare il file o la directory ho copiato il file jar in c e ho scritto C:\>jar mcf c:\jchat\client\Manifest.mf PROVA.jar jchat/ Can't determine application home infine ho copiato il file jar in jchat e ho scritto C:\jchat>jar mcf c:\jchat\client\Manifest.mf PROVA.jar jchat/ jchat : impossibile trovare il file o la directory quindi veramente non so cosa fare |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 11:14.