Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    92

    Lanciare java come eseguibile e da esegubile.

    Cercando nel forum ho trovato in molti che si chiedono come lanciare un'applicazione java come eseguibile, cioè cliccandoci sopra due volte.

    Ho letto che alcuni usano jelude, tuttavia io non concordo totalmente con loro, in quando distribuire un'applicazione come unico eseguibile bianrio fa perdere una delle migliori capacità di java, la programmazione per componenti!

    ad esempio se si progetta un'interfaccia grafica usando il pattern mvc e poi si crea un unico fiole monolitico, si perde un vantaggio non indifferende, e cioè il poter effettuare cambiamenti al software senza dover sostituire tutto il software.

    Per poter lanciare un'applicazione java come se fosse un eseguibile c'è una soluzione, creare un eseguibile che richiami la jvm e gli passi come parametro la main class della nostra applicazione.

    Per fare questo basta includere la classe unistd.h, la quale contiene la definizione dei tipi per la gestione dei processi.

    Comunque passiamo alla pratica:

    Aprite il dev-C++ (scaricabile gratuitamente) oppure il Visual C++.

    Create un progetto win32 (mi raccomando non console altrimenti uscirà quella fastidiosa finestra nera del dos), se usate il dev sarà ancora più facile settarla inoltre scegliete il C come linguaggio, anche se la cosa sarà ininfluente, in quanto fortunatamente il C++ permette di programmare anche in maniera procedurale senza creare oggetti in maniera obbligatoria.

    ora cancellate il file di default che il dev o il VC++ scrivono come main e aggiungete il seguente codice:

    #include <windows.h>
    #include <unistd.h>




    int WINAPI WinMain (HINSTANCE hThisInstance,
    HINSTANCE hPrevInstance,
    LPSTR lpszArgument,
    int nFunsterStil)

    {
    execl("C:\\Sun\\AppServer\\jdk\\bin\\javaw.exe","j ava", "Test", NULL);
    return 0;
    }


    l'unica riga che sarà necessario modificare per le varie applicazione è questa:
    execl("C:\\Sun\\AppServer\\jdk\\bin\\java.exe","ja va", "Test", NULL);

    dove C:\\Sun\\... è il path della jvm, grazie a questo meccanismo si può addirittura programmare la ricerca automatica da parte dell'eseguibile della jvm e il lancio di una jvm appositivamente inserita nella cartella dell'applicazione, anche se richiede qualche conoscenza un pò più approfondita del C o del C++;

    dopo dicchè si dovranno riportare tutti gli argomenti che si devono passare al programma, tuttavia il primo argomento deve essere il programma stesso in quanto la funzione deve puntare a esso anche come argomento, infine per far capire alla funzione che gli argomenti sono finiti si deve aggiungere un puntatore a NULL.

    esempio
    voglio lanciare il file che ho chiamato Contabilita.class tramite javaw, dove i binari per l'esecuzione dei class si trovano in C:\miaLocazione\locazione\bin

    execl("C:\\miaLocazione\\locazione\\bin\\javaw.exe ", "javaw", "Contabilita", NULL);

    cosi' se un giorno dovrete aggiornare un qualsiasi class, non cambierà nulla nel lancio, in accordo a una filosofia di buona programmazione e di programmazione per componenti. Inoltre è possibile aggiungere all'eseguibile qualsiasi icona, cercate in rete per i rispettivi ambienti di programmazione dev e vc++ e vedrete che è semplicissimo.

    Spero sto post sia d'aiuto a qualcuno.

    PS:Importante per funzionare l'eseguibile deve trovarsi nella stessa cartella della main class.

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    se fai un salto su javastaff.com, in home (sulla sinistra, verso il basso) trovi un articolo che fa al caso tuo...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  4. #4
    Utente di HTML.it L'avatar di morphy79
    Registrato dal
    Jun 2004
    Messaggi
    1,568
    boh.. io uso exe4j e ti permette un lavoro simile... hai un exe che richiama tutti i class...
    sostituendo i class non è necessario sostituire tutto il programma...
    odio chi parla di politica..
    anzi vorrei fondare un partito contro tutto ciò

  5. #5
    Utente di HTML.it L'avatar di salcam
    Registrato dal
    Dec 2005
    Messaggi
    193
    boh.. io uso exe4j e ti permette un lavoro simile... hai un exe che richiama tutti i class...
    Anch'io. Puoi variare qualsiasi class, stando attenti a non variare il nome del file class contenente il main.

    Comunque ottima "pillola" silvio78.

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    92
    Giusto per curiosità ma exe4j come fa a sapere poi dove puntare per chiamare la jvm, voglio dire supponiamo che io a priori non sappia dove si trova installata la jvm di un computer al quale voglio inserire quest'applicazione ne se è installata e se no di iniziare l'installazione della stessa, exe4j può farlo?

  7. #7
    Utente di HTML.it L'avatar di salcam
    Registrato dal
    Dec 2005
    Messaggi
    193
    A quanto mi ricordo, exe4j ti permette di limitare la versione della JVM, cioè quando viene creato l'eseguibile ti permette di fare un range delle versioni della JVM compatibili col tuo software. Inoltre se non è installata, ti segnala l'errore e, se non ricordo male, segnale il sito da cui poter scaricare la JVM (www.sun.com).

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,317
    Originariamente inviato da salvio78
    Giusto per curiosità ma exe4j come fa a sapere poi dove puntare per chiamare la jvm, voglio dire supponiamo che io a priori non sappia dove si trova installata la jvm di un computer al quale voglio inserire quest'applicazione ne se è installata e se no di iniziare l'installazione della stessa, exe4j può farlo?
    Non ho mai usato exe4j, ma non mi risulta difficile pensare che vada a prendere questa informazione nel registro di configurazione.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2006
    Messaggi
    92
    E se uno deve passare parametri per linea di comando?

  10. #10
    Utente di HTML.it L'avatar di salcam
    Registrato dal
    Dec 2005
    Messaggi
    193
    Ci dovrebbe essere l'impostazione. E' abbastanza completo

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.