Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Intervista a Stop Killing Games: distruggere videogiochi è come bruciare la musica di Mozart
Intervista a Stop Killing Games: distruggere videogiochi è come bruciare la musica di Mozart
Mentre Ubisoft vorrebbe chiedere agli utenti, all'occorrenza, di distruggere perfino le copie fisiche dei propri giochi, il movimento Stop Killing Games si sta battendo per preservare quella che l'Unione Europea ha già riconosciuto come una forma d'arte. Abbiamo avuto modo di parlare con Daniel Ondruska, portavoce dell'Iniziativa Europa volta a preservare la conservazione dei videogiochi
Samsung Galaxy S25 Edge: il top di gamma ultrasottile e leggerissimo. La recensione
Samsung Galaxy S25 Edge: il top di gamma ultrasottile e leggerissimo. La recensione
Abbiamo provato il nuovo Galaxy S25 Edge, uno smartphone unico per il suo spessore di soli 5,8 mm e un peso super piuma. Parliamo di un device che ha pro e contro, ma sicuramente si differenzia dalla massa per la sua portabilità, ma non senza qualche compromesso. Ecco la nostra prova completa.
HP Elitebook Ultra G1i 14 è il notebook compatto, potente e robusto
HP Elitebook Ultra G1i 14 è il notebook compatto, potente e robusto
Pensato per il professionista sempre in movimento, HP Elitebook Ultra G1i 14 abbina una piattaforma Intel Core Ultra 7 ad una costruzione robusta, riuscendo a mantenere un peso contenuto e una facile trasportabilità. Ottime prestazioni per gli ambiti di produttività personale con un'autonomia lontano dalla presa di corrente che permette di lavorare per tutta la giornata
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 11-04-2008, 18:04   #1
tylerdurden83
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 691
Eseguire file .jar

Allora raga, ho fatto le seguenti cose:

1) compilato i java -> class
2) ho due directory, una COM... con dentro l'alberatura e tutti i class, l'altra META-INF con dentro MANIFEST.MF

3) ho creato il jar con:

C:\Programmi\Java\jdk1.6.0_04\bin\jar.exe -cvfm progetto.jar META-INF\MANIFEST.MF *.*

4) il MANIFEST.MF è il seguente:

Manifest-Version: 1.0
Class-Path: C:\work\progetto.jar;C:\...\pippo.jar;C:\...\pluto.jar;C:\...\paperino.jar
Created-By: 1.6.0_04 (Sun Microsystems Inc.)
Main-Class: Com\..\Alberatura\..\..\MainClass
(riga vuota)

5) mi posiziono in una directory di appoggio, c:\work, con dentro il jar e il bat, lancio il bat che contiene la seguente istruzione:

start "Progetto" C:\...\bin\javaw -cp "C:\work\progetto.jar;C:\...\pippo.jar;C:\...\pluto.jar;C:\...\paperino.jar" Com\..\Alberatura\..\..\MainClass x y z

dove x y z sono parametri che voglio passare al main.
Risultato:
Could not find the mail class. Program will exit!

Ovviamente il progetto lanciato da eclipse o similia non dà problemi di classnotfoundexception etc.

Grazie a tutti,
Td
tylerdurden83 è offline   Rispondi citando il messaggio o parte di esso
Old 11-04-2008, 22:01   #2
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da tylerdurden83 Guarda i messaggi
3) ho creato il jar con:

C:\Programmi\Java\jdk1.6.0_04\bin\jar.exe -cvfm progetto.jar META-INF\MANIFEST.MF *.*
Solo per chiarezza e precisazione: il file di manifest che passi al tool jar non sei obbligato affatto a chiamarlo MANIFEST.MF e a metterlo in una directory META-INF. Può essere un nome qualunque.

Quote:
Originariamente inviato da tylerdurden83 Guarda i messaggi
4) il MANIFEST.MF è il seguente:

Manifest-Version: 1.0
Class-Path: C:\work\progetto.jar;C:\...\pippo.jar;C:\...\pluto.jar;C:\...\paperino.jar
Created-By: 1.6.0_04 (Sun Microsystems Inc.)
Main-Class: Com\..\Alberatura\..\..\MainClass
(riga vuota)
Non sei obbligato a mettere Manifest-Version o Created-By, ci penserebbe comunque il tool jar a metterli.

Comunque ci sono diverse cose sbagliate:

a) Main-Class: Com\..\Alberatura\..\..\MainClass

Non devi mettere un "path" con \ o /!!! Devi mettere un nome di classe "fully qualified", completamente qualificato. Es. com.pippo.MainClass

b) Class-Path: C:\work\progetto.jar;C:\...\pippo.jar;C:\...\pluto.jar;C:\...\paperino.jar

1) Pessima idea quella di specificare path assoluti.
2) Le specifiche del file JAR dicono che Class-Path deve specificare un insieme di URL relativi (non assoluti) separati da uno o più spazi per le eventuali librerie richieste dalla applicazione. Quindi essendo degli URL devi usare al massimo il / come separatore e se proprio volessi (ma come ho detto non è buona cosa) mettere path assoluti, dovresti mettere file:///C:/blabla......

Quote:
Originariamente inviato da tylerdurden83 Guarda i messaggi
start "Progetto" C:\...\bin\javaw -cp "C:\work\progetto.jar;C:\...\pippo.jar;C:\...\pluto.jar;C:\...\paperino.jar" Com\..\Alberatura\..\..\MainClass x y z
Scusa ma se vuoi mettere Main-Class nel manifest (per poter avviare direttamente il jar), che ti serve usare tutta 'sta roba???
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)

Ultima modifica di andbin : 11-04-2008 alle 22:21.
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 11-04-2008, 23:11   #3
tylerdurden83
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 691
Hai ragione, domani modifico, purtroppo non posso eseguirlo con successo da casa ma voglio vedere se riesco a levare main class not found come errore.
tylerdurden83 è offline   Rispondi citando il messaggio o parte di esso
Old 11-04-2008, 23:30   #4
nuovoUtente86
Senior Member
 
Iscritto dal: Mar 2007
Messaggi: 7863
Quote:
Originariamente inviato da andbin Guarda i messaggi
Solo per chiarezza e precisazione: il file di manifest che passi al tool jar non sei obbligato affatto a chiamarlo MANIFEST.MF e a metterlo in una directory META-INF. Può essere un nome qualunque.

Non sei obbligato a mettere Manifest-Version o Created-By, ci penserebbe comunque il tool jar a metterli.

Comunque ci sono diverse cose sbagliate:

a) Main-Class: Com\..\Alberatura\..\..\MainClass

Non devi mettere un "path" con \ o /!!! Devi mettere un nome di classe "fully qualified", completamente qualificato. Es. com.pippo.MainClass

b) Class-Path: C:\work\progetto.jar;C:\...\pippo.jar;C:\...\pluto.jar;C:\...\paperino.jar

1) Pessima idea quella di specificare path assoluti.
2) Le specifiche del file JAR dicono che Class-Path deve specificare un insieme di URL relativi (non assoluti) separati da uno o più spazi per le eventuali librerie richieste dalla applicazione. Quindi essendo degli URL devi usare al massimo il / come separatore e se proprio volessi (ma come ho detto non è buona cosa) mettere path assoluti, dovresti mettere file:///C:/blabla......

Scusa ma se vuoi mettere Main-Class nel manifest (per poter avviare direttamente il jar), che ti serve usare tutta 'sta roba???
inserendo nel valore class-path url relativi, gli stessi devono puntare a percorsi sullo stesso livello del jar,giusto?

E' possibile fare un jar senza main?Mi riferisco alla tua ultima osservazione!
nuovoUtente86 è offline   Rispondi citando il messaggio o parte di esso
Old 12-04-2008, 10:08   #5
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da nuovoUtente86 Guarda i messaggi
inserendo nel valore class-path url relativi, gli stessi devono puntare a percorsi sullo stesso livello del jar,giusto?
Per URL "relativi" si intendono cose del tipo: ../other.jar (nella directory superiore) oppure lib/other.jar (nella sottodirectory 'lib'). Sono appunto relativi al jar che contiene questi riferimenti.

Quote:
Originariamente inviato da nuovoUtente86 Guarda i messaggi
E' possibile fare un jar senza main?Mi riferisco alla tua ultima osservazione!
Se intendi senza l'attributo Main-Class, sì è possibile. Specificare l'attributo Main-Class serve solo se si vuole avviare direttamente il jar con java -jar tua_app.jar.

Se non si mette Main-Class si può comunque avviare la applicazione ma il jar va messo esplicitamente in "classpath" (variabile di ambiente CLASSPATH, opzione -classpath o magari anche nella 'ext' del JRE) e poi va avviata la JVM specificando il nome della classe. Es: java -classpath tua_app.jar com.pippo.MainClass

Chiaramente mettere l'attributo Main-Class ma poi non avviare il jar direttamente non serve a molto ....

Se invece intendi un jar che non contiene alcuna classe che ha il main() statico, la risposta è ancora sì. In tal caso sarà una jar che farà presumibilmente da "libreria" per altre applicazioni.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)

Ultima modifica di andbin : 12-04-2008 alle 10:10.
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2008, 10:33   #6
tylerdurden83
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 691
allora vediamo se ho fatto bene.

innanzi tutto lancio il jar con javaw -cp invece che con -jar. attualmente, sotto c:\work:

C:\...\javaw.exe -cp progetto.jar parametro1 parametro2

inoltre il file di manifest è il seguente, considerando che sono posizionato sotto c:\work e alcuni jar che viglio usare sono sotto diciamo c:\eseguibili:

Class-Path: progetto.jar ../eseguibili/pippo.jar ../eseguibili/pluto.jar ../eseguibili/paperino.jar
Main-Class: COM.x.x.x.MiaMainClass

Saluti e grazie 1000

Ultima modifica di tylerdurden83 : 14-04-2008 alle 10:42.
tylerdurden83 è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2008, 11:35   #7
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da tylerdurden83 Guarda i messaggi
Class-Path: progetto.jar ../eseguibili/pippo.jar ../eseguibili/pluto.jar ../eseguibili/paperino.jar
Non capisco perché devi mettere il nome del jar sé stesso nel manifest!!!
Per il resto gli altri path sono tecnicamente corrretti ... ovviamente quei jar devono esistere lì dove sono richiesti.

Quote:
Originariamente inviato da tylerdurden83 Guarda i messaggi
Main-Class: COM.x.x.x.MiaMainClass
Come credo (a questo punto non credo più....) di aver spiegato nella discussione, si mette l'attributo Main-Class per poter avviare direttamente il jar con java(w) -jar progetto.jar

Se sei tu a mettere esplicitamente in classpath il jar usando -cp/-classpath, quell'attributo Main-Class non viene usato e nel comando sei sempre tu che devi mettere esplicitamente il nome della classe che ha il main. Es. java(w) -classpath progetto.jar COM.x.x.x.MiaMainClass
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2008, 12:57   #8
tylerdurden83
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 691
Quindi, secondo quello che mi hai scritto, ora ho:

Manifest:

Class-Path: ../eseguibili/pippo.jar ../eseguibili/pluto.jar ../eseguibili/paperino.jar
Main-Class: COM.xxx.MiaMainClass

C:\...\javaw.exe -jar progetto.jar parametro1 parametro2

In pratica ho tolto il jar stesso dal path nel manifest, e lo lancio con javaw -jar progetto.jar così da sfruttare l'attributo main class del manifest.
Dove sbaglio ora?
tylerdurden83 è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2008, 13:10   #9
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da tylerdurden83 Guarda i messaggi
Class-Path: ../eseguibili/pippo.jar ../eseguibili/pluto.jar ../eseguibili/paperino.jar
Main-Class: COM.xxx.MiaMainClass

C:\...\javaw.exe -jar progetto.jar parametro1 parametro2

Dove sbaglio ora?
Tecnicamente ora è corretto. Cosa non va ... non posso saperlo. Che problemi/errori ti dà? Amesso che tutti i jar siano lì dove devono essere, sono creati correttamente?
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2008, 13:34   #10
tylerdurden83
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 691
i jar che non sono il mio progetto sono dove devono essere e creati correttamente (non fatti da me, funzionanti qualora lancio il mio progetto da eclipse e tutto il resto).

l'errore che mi appare su schermo è sempre quello che non trova la main class :/
tylerdurden83 è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2008, 13:40   #11
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Quote:
Originariamente inviato da tylerdurden83 Guarda i messaggi
l'errore che mi appare su schermo è sempre quello che non trova la main class :/
Anche il tuo jar è corretto? Aprilo con WinZip (o simile) e verifica: a) struttura dei package/classi e b) il contenuto del manifest (è in META-INF/MANIFEST.MF).

Ah, c'è una questione in generale riguardo le linee nel manifest. Non devono essere più lunghe di 72 byte. Nel Class-Path gli URL dovresti metterli su più righe e ogni riga deve iniziare con lo spazio.
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 14-04-2008, 14:27   #12
tylerdurden83
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 691
Quote:
Originariamente inviato da andbin Guarda i messaggi
Anche il tuo jar è corretto? Aprilo con WinZip (o simile) e verifica: a) struttura dei package/classi e b) il contenuto del manifest (è in META-INF/MANIFEST.MF).

Ah, c'è una questione in generale riguardo le linee nel manifest. Non devono essere più lunghe di 72 byte. Nel Class-Path gli URL dovresti metterli su più righe e ogni riga deve iniziare con lo spazio.
si il jar è corretto come alberatura e tutto
ho provato a fare come mi hai detto per il classpath ma da errore lo stesso
tylerdurden83 è offline   Rispondi citando il messaggio o parte di esso
Old 17-04-2008, 12:46   #13
tylerdurden83
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 691
qualche idea ?
tylerdurden83 è offline   Rispondi citando il messaggio o parte di esso
Old 19-04-2008, 18:57   #14
tylerdurden83
Senior Member
 
Iscritto dal: Nov 2004
Messaggi: 691
ffs dava quel problema xke la versione di java virtual machine che usavo sul pc di es e a cui facevo riferimento chiamando javaw era piu vecchia di quella ke avevo usato per creare i class
tylerdurden83 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Intervista a Stop Killing Games: distruggere videogiochi è come bruciare la musica di Mozart Intervista a Stop Killing Games: distruggere vid...
Samsung Galaxy S25 Edge: il top di gamma ultrasottile e leggerissimo. La recensione Samsung Galaxy S25 Edge: il top di gamma ultraso...
HP Elitebook Ultra G1i 14 è il notebook compatto, potente e robusto HP Elitebook Ultra G1i 14 è il notebook c...
Microsoft Surface Pro 12 è il 2 in 1 più compatto e silenzioso Microsoft Surface Pro 12 è il 2 in 1 pi&u...
Recensione REDMAGIC Astra Gaming Tablet: che spettacolo di tablet! Recensione REDMAGIC Astra Gaming Tablet: che spe...
Le 18 offerte Amazon del weekend, senza ...
Galaxy S25 Ultra 512GB sotto i 1.000€ su...
Vi piace l'iPhone nero? Su Amazon sono s...
MacBook Air M4 16GB/256GB e 16GB/512GB s...
4 portatili per risparmiare tanto ed ess...
San Marino multa TikTok: non controllano...
Dreame e Roborock in saldo su Amazon: ro...
Pazzesco su Amazon: crollano i prezzi de...
La Corea del Sud vorrebbe costruire una ...
Rilasciati i primi risultati delle anali...
Robot umanoidi low cost? Unitree ci prov...
Non solo Rocket Lab, anche Avio potrebbe...
Chips Act UE: 41,5 milioni di euro a Eph...
Ryzen Threadripper 9000 al debutto il 31...
Nuovi coupon nascosti Amazon (aggiorname...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 00:08.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v