2011-08-22 15 views
9

Ho un'app desktop Java rich client. che voglio distribuire su alcuni computer al lavoro, ma non ho mai fatto qualcosa di simile prima. Le persone non sono troppo avvezze al computer sul mio posto di lavoro e dato che è un lavoro da studente, non resterò lì per molto più tempo e mi piacerebbe se riuscissi a rendere il mio programma facile da eseguire rendendolo eseguibile quando le persone raddoppiano -cliccaci sopra.Come distribuire il mio programma Java in modo che sia eseguibile facendo doppio clic su un singolo file?

Inoltre, non voglio dover installare manualmente un JRE per farlo funzionare. Fondamentalmente, quello che mi piacerebbe sapere è come rendere la mia applicazione java eseguibile facilmente facendo doppio clic (anche se è solo su Windows, va bene). Sono abbastanza sicuro che avrò bisogno di confezionare la versione corretta di JRE a fianco, ma non so quale sia il modo corretto di farlo.

Ho letto su alcuni siti che non dovresti comprimere un JRE insieme al tuo programma perché rende le persone hanno più versioni diverse, alcune delle quali sono obsolete, e causa problemi di sicurezza, ma questo non è un problema in questo caso poiché i computer che eseguiranno la mia applicazione non sono connessi a Internet e sono comunque utilizzati solo per eseguire questo programma.

Domanda un po 'correlata: Poiché la mia applicazione è attualmente un progetto Eclipse, ottengo le mie risorse come icone, immagini, database SQLite (per lettura e scrittura), ecc. Utilizzando percorsi relativi (ad es .: img/test.png).

Devo cambiare uno di quei percorsi per farli continuare a lavorare anche quando sono imballati?

+1

http://stackoverflow.com/questions/147181/how-can-i-convert-my-java-program-to-an-exe-file –

+0

@Andrew Thompson Sì, lo fa –

+1

Considera anche [tag: java-web-start]. – trashgod

risposta

7

Quello che stai cercando è un file JAR. In Eclipse, è abbastanza facile creare un file Jar. In particolare, dovrai fare clic con il pulsante destro del mouse sul progetto, andare su Esporta e quindi selezionare "Contenitore eseguibile". Fai attenzione ai percorsi delle cartelle. Potrebbe essere necessario mantenere una cartella delle risorse accanto al file Jar. Potrebbe essere necessario fornire alcune più specifiche per ottenere una risposta esatta al riguardo. In genere, una cartella Risorse si trova nello stesso punto del file JAR (nella stessa cartella del computer).

+0

Sapevo di file JAR ma non li ho mai usati e mi è sembrato complicato nell'IDE di JDeveloper (cosa stavamo usando a scuola). Proverò ciò che hai appena menzionato in Eclipse e vedrai come funziona. Devo ancora assicurarmi che sul computer sia già presente un JRE, giusto? –

1

Per eseguire il problema facendo doppio clic su di esso è possibile distribuirlo come file jar o un file batch per chiamare il file jar.
Per la parte di installazione è possibile creare un file batch che controlli se java è presente e quindi chiama l'installer se non lo è.
Edit:
Il codice del lotto:

IF DEFINED JAVA GOTO ok 
java-installer.exe 
GOTO end 
:ok 
your-application.jar 
:end 
+0

Sembra grandioso, ma non controllerebbe solo per vedere se c'è QUALUNQUE versione di Java presente? Diciamo che la versione Java installata è 1.3 e sto usando 1.6 nel mio ambiente di sviluppo, non causerebbe problemi? –

4

Una soluzione migliore per una facile installazione di un'applicazione Java. con una GUI è di lanciarlo usando Java Web Start. Per l'utente, JWS è l'opzione di installazione 'one-click' che può (installare & avviare l'app.) Quindi aggiungere scorciatoie sul desktop e voci di menu. Un lancio JWS significherebbe un po 'più di lavoro per te, ma è un gioco da ragazzi per l'utente finale.

Per garantire che JRE sia presente per eseguire l'app, utilizzare deployJava.js (per ulteriori dettagli vedere il collegamento JWS). Lo script dovrebbe essere riconfigurato per ottenere l'installer JRE dalla rete locale - l'impostazione predefinita è quella di ottenerlo da Oracle.

La maggior parte delle risorse deve essere impacchettata nei file Jar e fornita insieme all'app., Ma per il DB, utilizzare JNLP ExtensionInstallerService per chiamare il programma di installazione DB.


..Java Web Start è una sorta di collegamento (o posso renderlo un collegamento sul desktop) che gli utenti faranno clic per installare JRE ed eseguire il programma se JRE non è installato, o semplicemente eseguire il programma se JRE è presente sul computer.

Il modo in cui funzionerebbe è disporre di una pagina Web sull'intranet locale. Quando l'utente visita la pagina, lo script verifica la presenza di un JRE adatto.

  • Se presente, scrive il collegamento al file di avvio.
  • Se non c'è JRE, o la versione è troppo bassa, guiderà l'utente attraverso l'installazione (solo una questione di loro facendo clic su "OK" quando richiesto). Quindi inserirà il link all'app.

posso quindi configurare il link per afferrare il JRE dal server sulla nostra rete.

Questa è la parte in cui è necessario riconfigurare lo script. AFAIR lo script espone un URL al quale cercare JRE - che può essere modificato per puntare a un posto sulla intranet.

.. Così "Web" è solo nel nome, i computer non devono essere collegati a Internet per avere questo lavoro, giusto?

Sì. JWS è una grande tecnologia di lancio per i rich client Java, ma è un nome scarsamente scelto.

+0

Vedo, grazie mille per l'informazione, sarà sicuramente utile! Per essere sicuro di aver capito bene, Java Web Start è una sorta di collegamento (o posso renderlo un collegamento sul desktop) che gli utenti faranno clic per installare JRE ed eseguire il programma se JRE non è installato, o semplicemente eseguire il programma se JRE è presente sul computer. Posso quindi configurare il collegamento per prelevare JRE dal server sulla nostra rete. Quindi "Web" è solo nel nome, i computer non devono essere connessi a Internet per avere questo lavoro, giusto? –

+0

Vedere le modifiche. E se hai trovato quella informazione. a portata di mano, sentiti libero di votare la mia risposta. ;) –

+0

BTW - la pagina in cui sono stato collegato alla demo di 'ExtensionInstallerService'. ha un sacco di * esempi auto-contenuti *. Vengono forniti con tutto il codice e un file di build che dovrebbe essere facile da importare in IDE importanti come Eclipse. Dai loro una prova per capire come funziona e cosa può fare per te e per i tuoi utenti. –

0

Se si trova difficile implementare i metodi sopra citati. Puoi procedere con questo approccio semplice.

Creare una cartella lib in un percorso. Metti tutti i vasi utilizzati dall'applicazione in questo. Se sei in grado di creare un jar per la tua applicazione, puoi anche posizionare il tuo application.jar nella cartella lib. Creare un file batch nella stessa posizione che conterrà il comando java per la classe principale in esso. Il testo all'interno del vostro gruppo potrebbe essere qualcosa di simile a questo:

set path="\lib\" 
java -cp %path% package1.package2.MainClass 

Per eventuali altre dipendenze, per esempio: se si utilizzano le immagini nel codice sotto img/icon.jpg. Quindi devi solo spostare la cartella img in questa posizione.

Basta comprimere questi file utilizzando Winrar e condividerli. L'esecuzione del file batch dopo l'estrazione dello zip avvierà la tua Java MainClass indipendentemente dalla posizione in cui è posizionata nel sistema client.

PS: Se non è possibile creare un jar per l'applicazione e posizionarlo nella cartella lib, copiare semplicemente la cartella bin con i file di classe e incollarla nel percorso e modificare il file batch di conseguenza per cercare le classi all'interno del contenitore .

Problemi correlati