2012-09-04 19 views
12

È possibile eseguire un file JAR localmente. Il prossimo passo è eseguirlo su un PC diverso.Sono necessari JRE e JDK per eseguire un file JAR?

La domanda è se JRE, JDK o entrambi sono necessari per eseguire il file JAR?

+1

della risorsa per eseguire un file Jar è necessario solo Java-RUNTIME-Environment (jre) e non Java-DEVELOPMENT-Kit (jdk) in cui il jre è incluso tra l'altro. Ma non so davvero cosa intendi con "esegui questo file jar in qualche altro sistema", hai semplicemente intenzione di correre su un PC diverso? – nurgan

risposta

26

Il JDK contiene JRE.

La maggior parte dei programmi richiede solo JRE (Java Runtime Environment), ma alcuni programmi richiedono il compilatore in fase di esecuzione, nel qual caso è necessario il JDK.

Se si dispone del JDK, non è necessario anche il JRE.

+0

Perché il compilatore è necessario se jre è già lì? – nobalG

+0

@nobalG dato che ora ho abbastanza reputazione da commentare, ecco uno scenario da tenere in considerazione: ho avuto una situazione in cui volevo scrivere codice che compili altro codice in fase di esecuzione e quindi utilizzi il codice compilato. Nel mio caso stavo creando uno strumento che poteva prendere una classe di test basata su un particolare framework, compilarlo, caricare la classe ed estrarre i dati di test da esso in modo che i dati potessero essere usati come parte di un test end-to-end . Affinché questo strumento funzioni correttamente, deve essere eseguito con JDK in modo che possa utilizzare il compilatore Java. –

4

Per eseguire un file jar è necessario solo java.exe (Windows). JDK è il kit di sviluppo per Java e JRE è il runtime. JDK contiene JRE.

+1

grazie. Puoi spiegare cosa ho bisogno in linux? – Dhinakar

+2

Per Linux è possibile installare java SDK utilizzando apt-get, oppure utilizzare synaptic oppure è possibile scaricare il file bin dal sito di Oracle. –

+0

La prima istruzione non è vera se il codice in esecuzione dipende da elementi inclusi solo nel JDK, ad esempio 'JavaCompiler'. Vedi [questa risposta] (http://stackoverflow.com/a/2946402/3284624) per un esempio. –

2

Hai solo bisogno di JRE.

Se il file jar che si sta tentando di eseguire è il Main-Class: <classname> intestazione presente nel file manifesto, allora si può semplicemente eseguire il file jar dal comando:

java -jar [your jar file name]

Se il manifesto file non dispone che l'ingresso (e si conosce il nome di classe completo della classe che contiene la funzione principale), quindi è possibile eseguire il file jar dal comando:

java -cp [absolute path to jar file] [full qualified class name containing the main function]

+0

Questo non è vero se il codice che viene eseguito dipende da elementi inclusi solo nel JDK, ad esempio, 'JavaCompiler'. Vedi [questa risposta] (http://stackoverflow.com/a/2946402/3284624) per un esempio. –

2

JRE è sufficiente per eseguire

JDK viene utilizzato per lo sviluppo

+0

Questo non è vero se il codice in esecuzione dipende da elementi inclusi solo nel JDK, ad esempio, 'JavaCompiler'. Vedi [questa risposta] (http://stackoverflow.com/a/2946402/3284624) per un esempio. –

1

È necessario un JRE, ma non il JDK. JRE è l'ambiente di runtime java e il codice java non può essere eseguito senza di esso. Il .jar è un file java compilato e questo richiede l'esecuzione dell'ambiente java runtime.

+1

Questa risposta è fuorviante perché implica che il JDK non è sufficiente e non è pertinente. Credo che una risposta più precisa sarebbe: "Ne hai bisogno uno o l'altro: uno è abbastanza, perché il JDK contiene JRE. Usa JDK se intendi programmare tu stesso Java." –

+0

Questo non è vero se il codice che viene eseguito dipende da elementi inclusi solo nel JDK, ad esempio, 'JavaCompiler'. Vedi [questa risposta] (http://stackoverflow.com/a/2946402/3284624) per un esempio. –

2

Per eseguire un file jar è necessario solo il JRE. È possibile eseguire il file jar con il seguente comando:

java-jar [jar file di nome]

+1

Questo non è sempre vero. Se il barattolo contiene codice che dipende dagli elementi inclusi con JDK ma non da JRE (ad esempio 'JavaCompiler'), potrebbe non funzionare correttamente o non funzionare affatto senza JDK. Vedi [questa risposta] (http://stackoverflow.com/a/2946402/3284624) per un esempio. –

0

si desidera eseguire il file jar; quindi ti serve solo l'ambiente Java Runtime (ad es. JRE).

+0

Questo non è vero se il codice che viene eseguito dipende da elementi inclusi solo nel JDK, ad esempio, 'JavaCompiler'. Vedi [questa risposta] (http://stackoverflow.com/a/2946402/3284624) per un esempio. –

3

Nei commenti sulla risposta accettata nobalG ha chiesto, "Perché il compilatore è necessario se jre è già lì?"

Al momento della scrittura non avevo abbastanza reputazione per commentare, quindi ho risposto qui invece.

Avevo una situazione in cui volevo scrivere codice che compili altro codice in fase di esecuzione e quindi utilizzi il codice compilato. Nel mio caso stavo creando uno strumento che poteva prendere una classe di test basata su un particolare framework, compilarlo, caricare la classe ed estrarre i dati di test da esso in modo che i dati potessero essere usati come parte di un test end-to-end . Affinché questo strumento funzioni correttamente, deve essere eseguito con JDK in modo che possa utilizzare il compilatore Java.

Problemi correlati