Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Ryzen Threadripper 9980X e 9970X alla prova: AMD Zen 5 al massimo livello
Ryzen Threadripper 9980X e 9970X alla prova: AMD Zen 5 al massimo livello
AMD ha aggiornato l'offerta di CPU HEDT con i Ryzen Threadripper 9000 basati su architettura Zen 5. In questo articolo vediamo come si comportano i modelli con 64 e 32 core 9980X e 9970X. Venduti allo stesso prezzo dei predecessori e compatibili con il medesimo socket, le nuove proposte si candidano a essere ottimi compagni per chi è in cerca di potenza dei calcolo e tante linee PCI Express per workstation grafiche e destinate all'AI.
Acer TravelMate P4 14: tanta sostanza per l'utente aziendale
Acer TravelMate P4 14: tanta sostanza per l'utente aziendale
Forte di soluzioni tecniche specifiche, il notebook Acer TravelMate P4 14 abbina dimensioni compatte e buona robustezza per rispondere alle necessità specifiche degli utenti aziendali. La piattaforma AMD Ryzen 7 Pro assicura prestazioni elevate con i tipici ambiti di produttività personale e sul lavoro, mantenendo un'elevata autonomia.
Hisense M2 Pro: dove lo metti, sta. Mini proiettore laser 4K per il cinema ovunque
Hisense M2 Pro: dove lo metti, sta. Mini proiettore laser 4K per il cinema ovunque
Dal salotto al giardino, il nuovo proiettore laser di Hisense promette esperienze cinematografiche in qualsiasi contesto: qualità d’immagine, semplicità d’uso, versatilità e prezzo competitivo il suo poker d'assi
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


Ryzen Threadripper 9980X e 9970X alla prova: AMD Zen 5 al massimo livello Ryzen Threadripper 9980X e 9970X alla prova: AMD...
Acer TravelMate P4 14: tanta sostanza per l'utente aziendale Acer TravelMate P4 14: tanta sostanza per l'uten...
Hisense M2 Pro: dove lo metti, sta. Mini proiettore laser 4K per il cinema ovunque Hisense M2 Pro: dove lo metti, sta. Mini proiett...
Lenovo ThinkPad X1 2-in-1 G10 Aura Edition: il convertibile di classe Lenovo ThinkPad X1 2-in-1 G10 Aura Edition: il c...
Intervista a Stop Killing Games: distruggere videogiochi è come bruciare la musica di Mozart Intervista a Stop Killing Games: distruggere vid...
Xbox: dal prossimo mese verifica dell'id...
Corsair AI Workstation 300: poco pi&ugra...
Addio a Elio Marioli, un pioniere della ...
L'IA sta già diminuendo il potere...
Guida autonoma? Gli ADAS falliscono e in...
Skechers lancia le scarpe per bambini co...
Revolut e Audi F1: un’alleanza rivoluzio...
Gestione attività di Windows 11 d...
Amazon lancia il nuovo videocitofono Bli...
Robot aspirapolvere al top: i nuovi DEEB...
Opera vs Microsoft: la guerra dei browse...
Router e ripetitori FRITZ! in offerta su...
Spotify vola a quota 700 milioni di uten...
Microsoft pronta ad abbandonare il launc...
Windows 11, arriva una feature multimoni...
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: 18:47.


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