tratto da www.html.it //////////////////////////////////// Lanciare comodamente Java da un .exe //////////////////////////////////// PRIMO METODO Visto il fatto che molte persone si lamentano xchè non esiste un modo comodo di lanciare un'applicazione Java, ho trovato un modo molto carino e facile per farlo. Poichè scrivo applicazioni gestionali per amici che hanno negozi, officine e varie allora mi sono impuntato xchè non mi piaceva il fatto che lanciassero la mia applicazione da un .bat! Cosa ci serve per completare l'operazione: - Borland Delphi 6 Personal Edition (Gratis) - classe Java di prova (magari Hello World) - DJBridge (Progetto open source lo trovate su sourceforge.net(projects) Praticamente il tutto nient'altroè che il lancio di una classe Java da codice Delphi. (Considerate che non sono pratico di programmazione delphi quindi se dico qualche inesattezza scusatemi) Cosa fare: - Creare un progetto vuoto in Delphi (eliminare anche il Form1 che mette di default) per esempio Project1.dpr - Scriviamo il seguente codice in Project1.dpr: program Project1; uses SysUtils, Classes, JavaRuntime; {$R *.res} var Strings : TStringList; Runtime : TJavaRuntime; begin try Strings := TStringList.Create; Runtime := TJavaRuntime.GetDefault; Runtime.CallMain('HelloWorld', Strings); Runtime.Wait; Strings.Free; except on EJvmException do ShowException(ExceptObject, ExceptAddr); end; end. Mettete al posto di HelloWorld, il nome della classe che volete lanciare. Notare che se volete passare argomenti al main della funzione che state lanciando dovete scriverli nell'array Strings che passate alla funzione Runtime.CallMain(..). Compilate ed eseguite il programma Project1.exe e con stupore vedrete la nostra classe partire come fosse un normale eseguibile win32! Da notare il fatto che bisogna mettere i seguenti file .pas nella stessa directory del progetto che state compilando: - JavaRuntime.pas - JUtils.pas - JNI.pas - JNIWrapper.pas In questo piccolo codice che ho scritto credo ci sia bisogno soltanto della libreria JavaRuntime.pas (dico credo xchè di delphi non capisco nulla!!!) Questi file li trovate all'interno del file jni_wrapper.zip che scaricherete da sourceforge. Naturalmente ci sarà sempre bisogno della JVM per far partire le applicazioni ma cmq questo è un modo molto più carino per avviarle rispetto che a cliccare 2 volte su uno scialbo file .bat. Naturalmente questa cosa è solo la + stupida che si può fare tramite queste librerie che permettono una comunicazione tra java e delphi. SECONDO METODO E io invece propongo un metodo alternativo, che non si sa mai Materiale necessario: La classe java (anche il semplice HelloWorld di cui sopra), o meglio il jar JElude, che non è altro che uno script per un programma di installazione, NSIS Allora, parto già dal presupposto che sappiamo già come creare file jar dalle nostre classi Per creare allora la nostra applicazioncina, basta che facciamo una copia del file .nsi (dal sito Jelude di cui sopra), che contiene le istruzioni per creare il .exe, e lo chiamiamo pippo.nsi Apriamo col blocco note, e dobbiamo modificare 4/5 righe: !define APPNAME "Pippo" qui mettiamo il nome dell'applicazione, quella che compare nel task manager, per intenderci !define JARFILE "Pippo.jar" ovviamente il jar creato da noi Icon "pippo.ico" l'icona che associata al .exe (va creata con un programma apposito, stile microangelo) (facoltativo) OutFile "pippo.exe" il .exe e infine il messaggio nel caso in cui sulla macchina dell'utente non sia presente una JVM, messaggio che inizia con MessageBox; se vogliamo anche la riga successiva, che apre di default il sito di java per scaricare il jre salviamo il file pippo.nsi, e sempre da riga di comando digitiamo makensis pippo.nsi et voilà! ecco il nostro .exe!