2012-05-04 15 views
5

Voglio eseguire un file Jar facendo doppio clic su di esso.Il file JAR a doppio clic non si apre Prompt dei comandi

Di seguito è riportato l'unico file di classe Java presente.

import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.io.IOException; 
public class Sysout{ 
public static void main(String[] args) throws IOException{ 
    System.out.println("Hello World!"); 
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
    String msg = br.readLine(); 
    System.out.println(msg); 
    br.read(); 
} 
} 

E il file manifest ha definito la classe principale.

Utilizzando il collegamento this, ho eseguito correttamente il file Jar facendo doppio clic sul file batch. Apre il prompt dei comandi ed esegue la classe principale definita.

Tuttavia, se faccio doppio clic sul file Jar direttamente, non accade nulla. Ho anche controllato il link this e associato il mio .jar a javaw.exe This link suggerisce anche lo stesso. Anche provato associando il .jar con java.exe

Quello che succede è che il prompt dei comandi si apre per una frazione di secondo e si spegne.

Anche se mi aspetto che l'utente inserisca alcuni dati, l'operazione di doppio clic non attende che l'utente inserisca qualcosa.

Dov'è il problema?

+2

Quando si associa il tuo .jar a javaw deliberatamente non mostra una finestra di comando !! associalo a java, e dovresti vedere la finestra – Petesh

+0

@Petesh Puoi aggiungere questo commento come risposta? Sono sicuro che sarai ricompensato. – adarshr

+0

Ho associato con java.exe. Tuttavia, la finestra viene mostrata solo per una frazione di secondo. Si prega di consultare il post aggiornato – whitehat

risposta

1

Può essere che il file .jar sia associato a un altro programma predefinito, fare clic con il pulsante destro del mouse e aprire con "Java (TM) Platform SE binary". Questo dovrebbe funzionare se hai un file jar eseguibile.

13

Quando si utilizza l'associazione javaw, questa non crea una finestra di comando e ingoia tutte le chiamate System.out e System.err.

È necessario riassociare il file .jar con il binario java, che dovrebbe visualizzare la finestra di comando richiesta.

Se si è utilizzata l'opzione semplice Open With..., avrà omesso l'opzione -jar dalla riga di comando.

aprire un finestra di comando di amministratore (questa operazione è necessaria se si sta utilizzando Vista o Windows 7 con UAC abilitato) e fare:

assoc .jar=jarfileterm 
ftype jarfileterm="C:\Program Files\Java\jre7\bin\java.exe" -jar "%1" %* 

Nel tuo caso, è necessario sostituire il percorso C:\Program Files\Java\jre7\bin\java.exe con quello per la tua installazione del jre.

Quando si fa doppio clic su questo, quindi dovrebbe funzionare correttamente.

È possibile aggiungere un altro ftype:

ftype jarfile="C:\Program Files\Java\jre7\bin\javaw.exe" -jar "%1" %* 

nuovo sostituendo il percorso del binario javaw con quello che è per il vostro sistema.

Ora dovrebbe essere in grado di passare dalla finestra e non finestrata scegliendo alternativamente assoc .jar=jarfileterm e assoc .jar=jarfile

Se si desidera mantenere la finestra di comando in giro dopo l'esecuzione del.jar, allora vi circondano la chiamata del comando java con un cmd /s /k cioè:

ftype jarfileterm=cmd /s /k ""C:\Program Files\Java\jre7\bin\java.exe" -jar "%1" %*" 
assoc .jar=jarfileterm 

Se questi comandi hanno lavorato, quindi fare doppio clic sul file jar causerà una finestra di comando di pop-up e persistono.

Non è possibile impostare una riga di comando abbastanza complessa con Open With... o utilizzando Default Programs per consentire l'esecuzione del file jar. Se hai provato con successo tutti questi comandi ftype e assoc e ancora non funziona, allora dovrai rimuovere l'editor del registro.

lancio regedit, e la ricerca di una chiave denominata .jar sotto HKEY_CLASSES_ROOT - questo dovrebbe tradursi in un singolo valore sottostante chiamato (Default) con un valore, se le vostre invocazioni comando ftype lavoravano, allora dovrebbe leggere jarfileterm. Se non ha funzionato, allora stai osservando un'associazione che potrebbe essere stata creata da un'altra applicazione (non so se il programma di aggiornamento Java sostituisce queste voci, ma se lo fa, allora potrebbe essere il problema)

È necessario cercare la chiave successiva nel HKEY_CLASSES_ROOT. Troverai questa voce, che dovrebbe contenere la chiave(ad esempio, espandi la cartella), che contiene una chiave Open che contiene una chiave Command che contiene un valore (Default) che dovrebbe contenere il comando di chiamata per avvio di file .jar. Questo comando dovrebbe corrispondere alle ultime voci ftype jarfileterm=... digitate. Se non è così, dovresti farlo corrispondere a uno dei file cmd /s /k o "c: \ program files \ java \ jre7 \ bin \ java.exe" (a seconda di se si desidera mantenere la finestra di comando in caso di errore all'avvio o meno)

+0

Ho associato jar a java.exe presente a jre/bin. Tuttavia, questo apre un prompt dei comandi per un secondo e si spegne. Mi aspetto un input dell'utente usando BufferedReader. Quindi dovrebbe aspettare qualche input da parte dell'utente prima di svanire in quel modo. – whitehat

+0

se hai usato la semplice opzione 'Apri con ...', allora l'opzione -jar sarebbe mancante, causando il problema che stai incontrando. Aggiornerò la risposta con una serie di opzioni che possono essere utilizzate dalla riga di comando per configurarla correttamente – Petesh

+0

Grazie per aver aggiornato la risposta. Ho seguito la soluzione impostando sia jarfileterm che jarfile. Associato .jar a jarfileterm. Tuttavia, questa soluzione non funziona :(Lo stesso problema persiste ancora Il prompt dei comandi viene mostrato solo per una frazione di secondo – whitehat

Problemi correlati