Esecuzione di file JAR su Windows


Risposte:


123

Il percorso più semplice è probabilmente l'aggiornamento o la reinstallazione di Java Runtime Environment (JRE).

O questo:

  • Apri Esplora risorse, dagli Strumenti seleziona 'Opzioni cartella ...'
  • Fare clic sulla scheda Tipi di file, scorrere verso il basso e selezionare il tipo di file JAR.
  • Premi il pulsante Avanzate.
  • Nella finestra di dialogo Modifica tipo di file, selezionare Apri nella casella Azioni e fare clic su Modifica ...
  • Premere il pulsante Sfoglia e accedere alla posizione dell'interprete Java javaw.exe.
  • Nel campo Applicazione utilizzata per eseguire l'azione, è necessario visualizzare qualcosa di simile a C:\Program Files\Java\j2re1.4.2_04\bin\javaw.exe" -jar "%1" %(Nota: la parte che inizia con 'javaw' deve essere esattamente così; l'altra parte del nome del percorso può variare a seconda della versione di Java che si sta utilizzando ) quindi premere i pulsanti OK fino alla chiusura di tutte le finestre di dialogo.

Che è stato rubato da qui: http://windowstipoftheday.blogspot.com/2005/10/setting-jar-file-association.html


13
penso che il modo semplice sia fare clic con il tasto destro su qualsiasi file jar> apri con e scegliere "Java runtime environment". :)
Kassem,

facendo così, mi dà sempre questo errore "La piattaforma Java SE binary ha smesso di funzionare" ... Qualcuno può aiutare, quale potrebbe essere il problema?
Faizan,

1
@Faizan - Il tuo problema sembra un problema separato. Vedo alcuni risultati SO e Google per "Il binario SE della piattaforma Java ha smesso di funzionare". Vorrei dare un'occhiata a quelli.
Brian Kelly,

26
non vi è alcuna scheda Tipi di file nelle opzioni Cartella nella vittoria 7
Radu Simionescu

79

In Windows Vista o Windows 7, l' editor manuale dell'associazione dei file è stato rimosso.

Il modo più semplice è eseguire Jarfix , un piccolo ma potente strumento freeware. Basta eseguirlo e le tue app Java sono tornate ... di nuovo doppio clic.


Grazie per il suggerimento, se solo ci fosse un modo per sbarazzarsi di queste piccole (non) "utilizzabili" nuove scatole
LoG

55

Se è necessario distribuire il file .jar e renderlo eseguibile su computer Windows di altre persone, è possibile creare un semplice file .bat come questo nel prompt dei comandi:

java -jar MyJavaTool.jar

e posizionare il file .bat nella stessa directory del file .jar.


Ma come viene eseguito .bat? Sarebbe la stessa strategia per consentire all'applicazione Java di aprire anche una sessione della riga di comando?
Ungeheuer,

1
Bene no, avresti semplicemente aperto il file bat. Non sono sicuro di aver capito la tua domanda.

26

Se hai un file jar chiamato Example.jar, segui queste regole:

  1. Apri a notepad.exe
  2. Scrivi : java -jar Example.jar
  3. Salvalo con l'estensione .bat
  4. Copialo nella directory che ha il .jarfile
  5. Fare doppio clic per eseguire il .jarfile

4
1) Non funzionerebbe su Mac. o Unix. 2) Crea un file non necessario. 3) Sono state fornite risposte migliori oltre 2 anni fa. 4) .. E quella parola sei 'tu'.
Andrew Thompson,

Ottimo modo per eseguire un vaso su Windows! Inoltre, non nasconde l'input della riga di comando, quindi sono stato in grado di vedere perché il mio vaso non funzionava come pensavo che avrebbe dovuto. Grazie.
Joe,

15

Un interessante effetto collaterale di questo provoca un problema all'avvio di file jar eseguibili nel prompt dei comandi.

Se provi (nel prompt dei comandi):

jarfile.jar parameter

Nessuna gioia, perché questo è tradotto in quanto segue (che non funziona):

javaw.exe -jar jarfile.jar parameter

Tuttavia, il seguente comando funziona:

java.exe -jar jarfile.jar parameter

Se si modifica l'associazione nel file manager come descritto sopra in:

"C:\Program Files\Java\j2re1.4.2_04\bin\java.exe" -jar "%1" %*

Quindi puoi digitare:

jarfile.jar parameter

nel prompt dei comandi e ora funzionerà!

EDIT: (Tuttavia, quando si esegue un'app Java basata su form (non console) viene visualizzata una finestra console nera, quindi questa non è una soluzione ideale)

Se si eseguono questi file jar facendo doppio clic su di essi in Windows, non verrà passato alcun parametro, quindi il codice Java deve gestire l'eccezione di overflow dello stack e includere una funzione "premere un tasto" alla fine o la finestra scompare.

Per passare un parametro in Windows devi creare un collegamento al file jar, che include il parametro nella riga di destinazione (fai clic con il pulsante destro del mouse sul collegamento e seleziona le proprietà) non puoi aggiungere parametri all'icona del file jar stesso in questo modo.

Non esiste una soluzione unica e coerente qui, ma avresti lo stesso problema con qualsiasi altra applicazione console.

Esiste un'applicazione freeware per Windows chiamata "bat to exe" che puoi usare per creare un file exe da un file .bat con l'appropriata riga di comando al suo interno. puoi anche incorporare il file jar nell'exe con questa applicazione e farlo ripulire al termine dell'esecuzione, quindi questa potrebbe essere una soluzione più elegante.


11

Primo set path su cmd (prompt dei comandi):

set path="C:\Program Files\Java\jre6\bin"

quindi digitare

java -jar yourProgramname.jar 

9

In Windows XP * sono necessari solo 2 comandi shell :

   C:\>ftype myjarfile="C:\JRE1.6\bin\javaw.exe" -jar "%1" %* 
   C:\>assoc .jar=myjarfile  

ovviamente usando il percorso corretto per JRE e qualsiasi nome tu voglia invece di myjarfile.

Per controllare solo le impostazioni correnti:

   C:\>assoc .jar  
   C:\>ftype jarfile  

questa volta utilizzando il valore restituito dal primo comando, se presente, anziché jarfile.

* non testato con Windows 7


1
Un utente anonimo lo ha testato con Windows 7 (JRE 7). Dicono che funziona se si esegue cmd come amministratore.
Jeremy Stein,

La migliore soluzione ai miei occhi. Funziona fino a Windows 10. I comandi ftype e assoc dovrebbero essere eseguiti in un prompt dei comandi di Windows con privilegi di amministratore.
SixDoubleFiveTreeTwoOne

7

C'è modo senza richiedere all'utente di apportare modifiche sul proprio PC. Runtime.getRuntime.exec () ci consente di avviare cmd.exe ed eseguire i comandi al suo interno. Quindi, è possibile che il programma java si esegua automaticamente nel prompt dei comandi quando l'utente fa clic sul file .jar.

public static void main(String[] args) throws IOException {
    if(args.length == 0) {
        Process p = Runtime.getRuntime().exec("cmd.exe /c start java -jar " + (new File(NameOfClass.class.getProtectionDomain().getCodeSource().getLocation().getPath())).getAbsolutePath() + " cmd");
    } else {
        //code to be executed
    }
}

6

Oltre a tutti gli altri suggerimenti, c'è un'altra cosa che devi considerare. Il tuo helloworld.jar è un programma console? Se lo è, non credo che sarai in grado di trasformarlo in un file jar con doppio clic. I programmi della console utilizzano la normale finestra della shell cmd.exe per l'input e l'output. Di solito il jar "launcher" è associato a javaw.exe che non crea una finestra della shell dei comandi.



4

In regedit, apri HKEY_CLASSES_ROOT\Applications\java.exe\shell\open\command

Fare doppio clic sul valore predefinito a sinistra e aggiungere -jar tra il java.exepercorso e l' %1argomento " ".


Era questo. Grazie. Tutte le altre cose non hanno aiutato.
raedma,

3

Vuoi controllare un paio di cose; se questo è il tuo file jar, assicurati di aver definito una classe Main nel manifest. Poiché sappiamo che puoi eseguirlo dalla riga di comando, l'altra cosa da fare è creare un collegamento di Windows e modificare le proprietà (dovrai guardarti intorno, non ho un computer Windows da guardare) in modo che il comando che esegue su open è il comando java -jar che hai citato.

L'altra cosa: se qualcosa non è confuso, dovrebbe funzionare comunque; controlla e assicurati di avere java associato con l'estensione .jar.


1

Sfortunatamente, non è così facile poiché Microsoft ha rimosso la finestra di dialogo avanzata dell'associazione dei file nelle recenti edizioni di Windows. - Con le versioni più recenti di Windows è possibile specificare solo l'applicazione che verrà utilizzata per aprire il file .jar.

La correzione dell'apertura del file .jar su Windows richiede due passaggi.

  1. Apri il Pannello di controllo e scegli "Programmi predefiniti -> Imposta associazioni". Trova l'estensione .jar ( file JAR eseguibile ) e seleziona Java come programma predefinito per aprire questa estensione. Probabilmente verrà elencato come " Java Platform (SE) ". Un'alternativa più veloce forse è il semplice clic con il tasto destro del mouse su un file .jar, quindi cambiare il programma associato facendo clic sul pulsante "Cambia ...".

  2. Ora apri regedit e apri la HKEY_CLASSES_ROOT\jarfile\shell\open\commandchiave. Fortunatamente per noi, possiamo specificare i parametri lì per il (Default)valore. Sul mio sistema Windows sembra: C:\app\32\jre7\bin\javaw.exe" -jar "%1" %*ma nella maggior parte dei casi è la seguente stringa:C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %*

APPUNTI:

  • Non usarlo java.exeperché aprirà la finestra della shell.
  • Lo strumento jarfix menzionato in questo thread molto probabilmente non fa altro che la modifica del registro per te. Preferisco il metodo di modifica manuale del registro, poiché ciò implica che l'amministratore di sistema può "inviare" la modifica del registro a tutte le workstation della rete.

1

Ho avuto lo stesso problema in Windows 10. L'ho risolto usando il tasto destro del mouse su " helloworld.jar " e andare su Proprietà e fare clic sul pulsante Cambia in "Apre con:" e selezionare " Cerca un'altra app su questo PC ". Nella finestra di dialogo " Apri con ... ", vai alla posizione della cartella Java sul tuo PC e apri la cartella jdk corrispondente, quindi apri la cartella bin e seleziona " javaw.exe " da lì. Quindi la prossima volta il tuo " helloworld.jar " si aprirà normalmente.

Esempio di posizione java usuale: " C: \ Programmi (x86) \ Java \ jdk1.8.0_111 \ bin ".


1

Un altro modo per eseguire file jar con un clic / doppio clic è anteporre "-jar" al nome del file. Ad esempio, rinominare il file MyJar.jarin -jar MyJar.jar.

Devi avere i .classfile associati java.exe, ovviamente. Questo potrebbe non funzionare in tutti i casi, ma ha funzionato più volte per me.


1

PreScript : se il tuo prompt appare e scompare immediatamente, il motivo è che il tuo programma viene eseguito e chiuso automaticamente. Prova a mettere uno scanner alla fine per terminare e manterrà il tuo prompt in attesa di input prima di terminare. (O forse usare il ritardo)

Era nella stessa situazione, in cui l'esecuzione di .jar da cmd funzionava bene, ma il doppio clic non ha fatto nulla.

Soluzione: aprire un editor di testo e scrivere la riga di comando: java -jar Example.jar Salvare il file come file .bat. Esegui questo file bat per ottenere l'output necessario.

Facendo un passo avanti, puoi convertire questo file bat in file exe utilizzando un semplice strumento GUI come Bat To Exe Converter.

Ora puoi condividere il tuo .jar come una distribuzione in file .exe che chiunque può usare semplicemente assicurati di tenere insieme tutti i file. (Soprattutto il file .jar e .bat causa .bat è solo un prompt cmd) (Come sembra logico)

Sono abbastanza nuovo per lo sviluppo e l'apprendimento molto. Si prega di scusarsi per eventuali errori se commessi. Suggerimenti sono ben accetti


1

usa il .batfile:

Inserisci il tuo comando in un file .bat. qui, il tuo comando sarà java -jar path\yourJarName.jar. Something like: java -jar C:\workspace\myApplication.jar

Salvalo e fai doppio clic sul file bat per eseguire il tuo vaso. Il nome del tuo file sarà similefileName.bat


0

Se usi eclipse per creare i tuoi file java, puoi scegliere di esportarlo come file jar eseguibile. L'ho fatto con i miei programmi e posso semplicemente fare clic sul vaso e funzionerà proprio così. Funzionerà su entrambe le finestre, così come su os x.


Non sembra essere garantito che funzioni, secondo questa domanda
doubleDown

0

Iniziare.bat è stata l'unica cosa che ha funzionato per me.

apri un documento di testo e inserisci. java -jar qualunque sia il tuo chiamato .jar

salva come start.bat nella stessa cartella del file .jar che desideri eseguire. e quindi eseguire il. pipistrello


0

Se è necessario eseguire il file jar facendo doppio clic su di esso, è necessario crearlo come " JAR eseguibile ". puoi farlo semplicemente con il tuo IDE.

Se stai usando eclipse, segui questi passaggi:

    To create a new runnable JAR file in the workbench:

1.From the menu bar's File menu, select Export.
2.Expand the Java node and select Runnable JAR file. Click Next.
3.In the  Opens the Runnable JAR export wizard Runnable JAR File Specification page, select a 'Java Application' launch configuration to use to create a runnable JAR.
4.In the Export destination field, either type or click Browse to select a location for the JAR file.
5.Select an appropriate library handling strategy.
Optionally, you can also create an ANT script to quickly regenerate a previously created runnable JAR file.

ulteriori informazioni sono disponibili nella pagina di aiuto di Eclipse: LINK


0

Esistono molti metodi per eseguire il file .jar su Windows. Uno di questi sta usando il prompt dei comandi.

Passaggi:

  1. Apri prompt dei comandi (Esegui come amministratore)
  2. Ora scrivi il comando "cd \" per la directory principale
  3. Digita "java jar nomefile.jar" Nota: puoi anche utilizzare qualsiasi app di terze parti come WinRAR, jarfix, ecc.


0

Crea .batfile:

start javaw -jar %*

E scegli l'app predefinita da aprire .jarcon questo .batfile.

Si chiuderà cmdall'avvio del .jarfile.


0

Per la compilazione:

javac  -cp ".;./mysql-connector-java-5.0.8.jar;mybatis-3.0.1.jar;ibatis-2.3.0.677.jar" MainStart.java

Per correre:

java  -cp ".;./mysql-connector-java-5.0.8.jar;mybatis-3.0.1.jar;ibatis-2.3.0.677.jar" MainStart

0

In realtà, ho affrontato anche questo problema, ho risolto il problema creando un runner .bat per il mio file jar:

ecco il codice:

class FileHandler{
   public static File create_CMD_Rnner(){
      int exitCode = -1625348952;
      try{
           File runner = new File(Main.batName);
           PrintWriter printer = new PrintWriter(runner);
           printer.println("@echo off");
           printer.println("title " + Main.applicationTitle);
           printer.println("java -jar " + Main.jarName + " " + Main.startCode );
           printer.println("PAUSE");
           printer.flush();
           printer.close();
           return runner;
       }catch(Exception e){
           System.err.println("Coudln't create a runner bat \n exit code: " + exitCode);
           System.exit(exitCode);
           return null;
       }
   }
}



Quindi nella tua classe di applicazione principale fai questo:

public class Main{
    static String jarName = "application.jar";
    static String applicationTitle = "java Application";
    static String startCode = "javaIsTheBest";
    static String batName = "_.bat";


    public static void main(String args[]) throws Exception{
        if(args.length == 0 || !args[0].equals(startCode)) {
            Desktop.getDesktop().open(FilesHandler.create_CMD_Rnner());
            System.exit(0);
        }else{
            //just in case you wanted to hide the bat
            deleteRunner();
            // Congratulations now you are running in a cmd window ... do whatever you want
            //......
            System.out.println("i Am Running in CMD");
            //......
            Thread.sleep(84600);
        }
    }


    public static void deleteRunner(){
        File batRunner = new File(batName);
        if(batRunner.exists()) batRunner.delete();
    }
}


Si prega di notare che

  1. questo codice (il mio codice) funziona solo con un file jar, non un file di classe.

  2. il file jar deve avere lo stesso nome della stringa "jarName" è la classe Main

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.