Fornendo come applicazione argumentEdit
Supponiamo di avere un pacchetto chiamato org.mypackage contenente le classi:
- HelloWorld (main class)
- SupportClass
- UtilClass
e i file che definiscono questo pacchetto sono memorizzati fisicamente nella directory D:\myprogram (su Windows) o / home / user / myprogram (su Linux).
La struttura del file si presenta così:
Quando invochiamo Java, specifichiamo il nome dell’applicazione da eseguire: org.il mio pacchetto.HelloWorld., Tuttavia dobbiamo anche dire a Java dove cercare i file e le directory che definiscono il nostro pacchetto.,o per lanciare il programma, utilizzare il seguente comando:
Microsoft Windows | Linux |
---|---|
java -classpath D:\myprogram org.mypackage.HelloWorld |
java -cp /home/user/myprogram org.mypackage.HelloWorld |
dove:
-
java
è il Java runtime launcher, un tipo di SDK Tool (strumento da riga di comando, come javac, javadoc, o apt) - -classpath D:\myprogram imposta il percorso per i pacchetti utilizzati nel programma (su Linux, -cp /home/utente/programma) e
- org.,il mio pacchetto.HelloWorld è il nome della classe principale
Che imposta il percorso attraverso un ambiente variableEdit
La variabile di ambiente denominata CLASSPATH
può essere usata in alternativa per impostare il classpath. Per l’esempio precedente, potremmo anche usare su Windows:
set CLASSPATH=D:\myprogramjava org.mypackage.HelloWorld
La regola è che l’opzione -classpath
, quando viene utilizzata per avviare l’applicazione java, sovrascrive la variabile di ambiente CLASSPATH
. Se non vengono specificati, la directory di lavoro corrente viene utilizzata come classpath., Ciò significa che quando la nostra directory di lavoro è D:\myprogram\
(su Linux, /home/user/myprogram/
), non avremmo bisogno di specificare esplicitamente il classpath. Quando si esegue l’override, tuttavia, si consiglia di includere la cartella corrente "."
nel classpath nel caso in cui si desideri caricare le classi dalla cartella corrente.
Lo stesso vale non solo per java launcher ma anche per javac, il compilatore java.
Impostazione del percorso di un file Jaredit
Se un programma utilizza una libreria di supporto racchiusa in un file Jar chiamato supportLib.,jar, fisicamente si trova nella directory D:\myprogram\lib\ e il fisico corrispondente struttura del file è:
D:\myprogram\ | ---> lib\ | ---> supportLib.jar | ---> org\ | --> mypackage\ | ---> HelloWorld.class ---> SupportClass.class ---> UtilClass.class
la seguente riga di comando opzione è necessaria:
java -classpath D:\myprogram;D:\myprogram\lib\supportLib.jar org.mypackage.HelloWorld
o, in alternativa:
set CLASSPATH=D:\myprogram;D:\myprogram\lib\supportLib.jarjava org.mypackage.HelloWorld
l’Aggiunta di tutti i file JAR in un directoryEdit
In Java 6 e superiore, con la possibilità di aggiungere tutti i jar file in una directory specifica per il classpath utilizzando il carattere jolly di notazione.,
Esempio Windows:
java -classpath ".;c:\mylib\*" MyApp
Esempio Linux:
java -classpath '.:/mylib/*' MyApp
Funziona sia per le opzioni-classpath
che per i percorsi di classe dell’ambiente.
Impostazione del percorso in un file manifestedit
Se un programma è stato racchiuso in un file Jar chiamato HelloWorld.jar, che si trova direttamente nella directory D:\myprogram, la struttura di directory è la seguente:
D:\myprogram\ | ---> helloWorld.jar | ---> lib\ | ---> supportLib.jar
Il file manifest definito in HelloWorld.,jar ha questa definizione:
Main-Class: org.mypackage.HelloWorldClass-Path: lib/supportLib.jar
Il file manifest dovrebbe terminare con una nuova riga o con ritorno a capo.
Il programma viene avviato con il seguente comando:
java -jar D:\myprogram\helloWorld.jar
Questo avvia automaticamente org.il mio pacchetto.HelloWorld specificato nella classe Main-Class con gli argomenti. L’utente non può sostituire questo nome di classe utilizzando l’invocazionejava-jar
. Class-Path descrive la posizione di supportLib.jar relativo alla posizione della libreria HelloWorld.vaso., Non sono supportati né il percorso assoluto del file, che è consentito nel parametro -classpath
sulla riga di comando, né i percorsi interni jar. Ciò significa che se il file di classe principale è contenuto in un jar, org/mypackage/HelloWorld.la classe deve essere un percorso valido sulla radice all’interno del jar.
Più voci classpath sono separate da spazi:
Class-Path: lib/supportLib.jar lib/supportLib2.jar