L'uso dell'opzione -classpath
con java
, aggiungere o sostituire il contenuto della variabile env CLASSPATH
?Java -classpath option
risposta
Utilizzando la variabile classpath sostituisce la variabile CLASSPATH della variabile Ambiente ma solo per quella sessione. Se si riavvia l'applicazione, è necessario impostare nuovamente la variabile classpath.
Sì. Citato dalla pagina java(1)
man:
-classpath classpath
-cp classpath
Specifies a list of directories, JAR archives, and ZIP archives to search for class files. Class
path entries are separated by colons (:). Specifying -classpath or -cp overrides any setting of the
CLASSPATH environment variable.
If -classpath and -cp are not used and CLASSPATH is not set, the user class path consists of the cur-
rent directory (.).
La variabile di ambiente è * non * aggiornata affatto, secondo questo. Non vedo come la risposta sia "sì". –
@ S.Lott - Da quale punto di vista? Dal punto di vista del * programma * il valore CLASSPATH (se esiste) viene sostituito. Dal punto di vista * della shell *, il valore CLASSPATH non viene modificato. Penso che la domanda originale fosse formulata male. – Nate
una delle due opzioni è usato, non entrambi.
Specificare -classpath o -cp sovrascrive qualsiasi impostazione della variabile di ambiente CLASSPATH.
...
L'opzione -classpath è preferibile perché è possibile impostare individualmente per ogni applicazione senza influenzare altre applicazioni e senza altre applicazioni che modificano il suo valore.
...
Impostazione della variabile CLASSPATH o utilizzando l'opzione della riga di comando -classpath ignora che di default, quindi se si desidera includere la directory corrente nel percorso di ricerca, è necessario includere " ". nelle nuove impostazioni.
L'utilizzo dell'opzione -cp non influisce sulla variabile di ambiente CLASSPATH.
Si può provare questo piccolo frammento di codice per controllare questo:
public class CPTest {
public static void main (final String[] args) {
String cp = System.getenv("CLASSPATH");
System.out.println(cp);
}
}
%echo $CLASSPATH
/home/test/:.
L'uscita senza opzione -cp:
%java CPTest
/home/test/:.
L'uscita con l'opzione -cp:
%java -cp /home/xanadu:. CPTest
/home/test/:.
L'output è uguale per entrambe le chiamate (una con -cp e una senza).
anche sia il percorso specificato nella variabile ambiente CLASSPATH è
utilizzati o il percorso specificato è utilizzato con cp opzione. Non è un mix di entrambi è uno di loro.
Questo è evidente dall'invocazione sottostante. Se la CWD (directory di lavoro corrente "")
è escluso dalla possibilità cp, il lanciatore JVM (cioè Java) non riesce a trovare il file
di classe, nonostante la variabile d'ambiente CLASSPATH contenente CWD ("") dentro.
%java -cp /home/test CPTest
Exception in thread "main" java.lang.NoClassDefFoundError: CPTest
- 1. Classpath Java - Linux
- 2. Java - classpath impostazione
- 3. java --classpath sovrascrive CLASSPATH o si aggiunge ad esso?
- 4. Oozie Java Azione: passaggio del classpath Hbase
- 5. Significato di "*:" nella specifica del classpath java
- 6. File BAT per creare Java CLASSPATH
- 7. Aggiunta di WAR al classpath di Java
- 8. Javac vs Java all'interno -classpath opzione
- 9. scansione java classpath nel plug-in maven
- 10. java.library.path, classpath Netbeans 8.0.2
- 11. Visualizza classpath in jshell
- 12. Aggiunta di .jar a classpath (Scala)
- 13. Imposta cartella per classpath
- 14. Whitespace in CLASSPATH
- 15. WEB-INF è in CLASSPATH?
- 16. Ant classpath e junit.jar
- 17. classpath di script groovy
- 18. help con file ant - classpath per l'attività Java
- 19. cartella Rimuovere da Java classpath in fase di esecuzione
- 20. Aggiunta di una libreria a CLASSPATH Java in Ubuntu
- 21. È buona norma includere la configurazione XML nel classpath Java?
- 22. aggiungi un jar a maven exec: java classpath
- 23. Java: loop su tutte le classi nel classpath
- 24. Aggiunta di file a classpath java in fase di esecuzione
- 25. Come aggiungere l'origine java sul classpath gradle buildscript?
- 26. Aggiungere stock option in woocommerce
- 27. onClick Option for Rickshaw Charting
- 28. Intellij Annotate Option Grayed Out
- 29. gcc -mpreferred-stack-boundary option
- 30. ClassPathResource non ottiene il classpath
Buona domanda. Non ci ho mai pensato – marionmaiden
Vuoi sapere se la variabile d'ambiente è cambiata? Hai eseguito un test per vedere * effettivamente * se è cambiato? –
Perché non provarlo tu stesso? –