Oggi voglio scrivere di un problema in cui può essersi imbattuto chiunque abbia provato a creare uno script batch a partire da un progetto java:
"Could not find main class ...."
Controllate e ricontrollate il file MANIFEST e il package e il nome della classe sono corretti...cosa diamine può essere?
La cosa più stupida del mondo...il file MANIFEST deve terminare con una riga completamente vuota. Ebbene si, è così. Al proposito c'è una nota importante nella documentazione ufficiale sulla sintassi del file MANIFEST.
Creare uno script batch in ambiente Windows
A questo punto, visto che ci siamo, vediamo come possiamo lanciare il nostro main da uno script batch nella maniera più pulita possibile.
Nella cartella principale dei sorgenti, sotto la dir "META-INF" andiamo ad editare il file "MANIFEST.MF":
Manifest-Version: 1.0Main-Class: it.test.TestClass-Path: lib/ojdbc14.jar lib/log4j-1.2.16.jar
Oltre ad indicare il nome completo della classe main, andiamo a specificare con il class-path tutte le librerie necessarie al nostro progetto. Rispetto alla posizione che occuperà il jar prodotto per il nostro progetto le librerie si troveranno nella cartella "lib".
A questo punto esportiamo il nostro progetto come file jar (ad esempio tramite eclipse) avendo l'accortenza di specificare l'uso di un file MANIFEST esistente, quello che abbiamo appena editato.
Dopodichè creaiamo una cartella per contenere tutto quanto necessario al nostro batch, con l'alberatura mostrata in figura:
All'interno della cartella "bin" andremo a disporre il file jar creato e a creare una sotto-cartella "lib" dove disporremo tutte le librerie indicate nel class-path.
A questo punto editiamo lo script batch vero e proprio, test.bat, come di seguito:
set currentdate=%DATE:~-4%_%DATE:~3,2%_%DATE:~0,2% set currenttime=%TIME:~0,2%_%TIME:~3,2%_%TIME:~6,2%_%TIME:~9,2% set timestamp=%currentdate%H%currenttime% java -Dlog4j.configuration=file:log4j.xml -jar bin/Test.jar testParameter > log/test-%timestamp%.log
Lo script specifica il file di configirazione per il log (usiamo log4j), il nostro jar da richiamare, "Test.jar", un parametro per il main il cui valore è "testParameter" ed infine redirige l'output della console verso un file di log nell'omonima cartella.
Nessun commento:
Posta un commento