2010-02-09 8 views
5

Se c'è una cosa che mi infastidisce su Java, è che non è possibile fare doppio clic su un file di classe in modo da eseguirlo. Presumo che ci sia una voce nel registro che deve essere modificata per farlo, ma non ne ho idea.Associare file di classe Java per l'esecuzione con doppio clic su Windows

Quindi, come si dice sulla latta. Qualcuno sa come associare i file di classe Java per l'esecuzione con doppio clic su Windows (mirando a Windows 7 qui, ma sono sicuro che non ci sarebbe alcuna differenza nelle tre versioni più recenti)? Mi renderebbe la vita più facile (e sono sicura che molte altre persone)!

Udpate: Ho visto delle risposte relative alla creazione di un JAR fuori dalla classe in questione e all'esecuzione in quel modo. Comunque utile, non è esattamente quello che sto cercando qui. Sto effettivamente cercando Windows stesso per invocare java con la classe sul doppio clic, con gli argomenti corretti.

+2

cosa ti aspetteresti che un .class faccia se non ha un metodo main (cioè se non fa nulla?) – OscarRyz

+0

idealmente, NoMainMethodException o qualunque java dovrebbe lanciare quando passi una classe senza un metodo principale ad esso –

+1

è necessario il meccanismo .jar per elencare quale classe ha il principale e dove sono tutte le dipendenze. c'è poca utilità nel tentativo di creare un file .class "eseguibile" poiché è ancora necessario impostare il classpath con le dipendenze, e ci sono sempre delle dipendenze –

risposta

2

Quando si installa Java Runtime Environment, registra i file .jar come un'associazione in Windows. Se fai doppio clic su un file .jar, lo aprirà utilizzando Java. Perché ciò funzioni, devi assicurarti di avere un manifest definito che punti alla classe da eseguire. Il tuo file di classe da eseguire deve avere un metodo principale che verrà chiamato.

Supponiamo di avere una classe denominata "com.TheClass.class" sul disco. Se vuoi che questo sia in grado di girare con doppio clic, crea un file in una nuova directory chiamata META-INF/manifest.mf. Inseritelo:

Manifest-Version: 1.2 
Main-Class: com.TheClass 

Zip (o utilizzare il comando jar) sia la classe con questa directory e file manifest. Rinominalo in mine.jar. Fare doppio clic su di esso e dovrebbe avviare la classe con il runtime Java.

2

Per un file .class da eseguire, è necessario in primo luogo che abbia "qualcosa" da fare, ovvero che .class contenga un metodo main. Non tutti gli .class ne hanno uno.

Una cosa che puoi fare è avvolgere la tua app (un certo numero di file .class) all'interno di un file jar.

Per breve, basta in aggiunta alle classi un file manifesto che dice, where the main method is:

jar -cmf yourmanifestfile.mf doubleClickApp.jar *.class 

E questo è tutto, il doubleClickApp.jar è ora eseguibile con un gesto "doubleClick".

3

La soluzione JAR a doppio clic è il metodo di distribuzione Java standard più comune. Ci sarebbero una serie di problemi con il tentativo di eseguire direttamente i file .class, con il classpath quello che viene in primo piano.

Detto questo, se si voleva sostenere le possibilità molto più semplici nell'ambiente di sviluppo, si potrebbe in teoria implementare uno script che

  • ispezionato il.file di classe per il nome completo della classe (incluso il pacchetto e il nome di classe interna)
  • avvicinò l'albero delle directory alla radice del percorso di classe del file
  • (opzionalmente inclusi eventuali lib comuni nel percorso di classe)
  • invocato Java per la classe determinata

Quindi è possibile registrare lo script lucido come gestore per i file .class. Ma dal momento che sei nell'ambiente di sviluppo, non sei più felice con il tuo IDE che lo fa?

+0

Certo, adoro il mio IDE che lo fa per me. Ma penso che le cose sarebbero più facili se potessi fare clic su una classe qualsiasi e idealmente uno script che lo faccia per me e invocare java.exe nella classe appropriata. Suppongo che uno script VB possa essere associato al menu di scelta rapida e farlo? –

+1

Sicuro, VBScript, programma Java, file batch. Usa semplicemente "Apri con ..." nel menu di scelta rapida per impostare l'associazione file (o comunque ti piace farlo). –

5

se classpath non importa troppo, fatto facilmente con un semplice file batch runjava.bat o giù di lì, che è associato con i file .class nella Explorer (tramite click destro >> aperto con ..)

@echo off 
REM change to folder where the class file resides 
cd %~d1%~p1 
REM execute the class by calling its name without file extension 
start java %~n1 
+0

E senza dubbio associare i file di classe con il pipistrello. Mi piace il CD per affrontare il classpath. L'inizio è vantaggioso? bene anche aggiungere '.class' a PATHEXT set PATHEXT =% PATHEXT% ;. classe così dalla riga di comando puoi semplicemente inserire il nome file della classe senza l'estensione della classe. Inoltre puoi sostituire% ~ d1% ~ p1 con% ~ dp1 come menzionato in 'for /?' – barlop

0

Il modo più semplice che ho trovato è stato creare un collegamento nella stessa cartella del file .class. Quindi fai clic destro su di esso e vai alle proprietà. Modificare il campo Target-java NameOfClass, infine, fare doppio clic sul collegamento :)