Czy można użyć opcji -classpath
z java
, dodać lub zamienić zawartość zmiennej env CLASSPATH
?Opcja Java -classpath
Odpowiedz
Użycie zmiennej typu ścieżka klasy zastępuje zmienną CLASSPATH środowiska, ale tylko dla tej sesji. Jeśli ponownie uruchomisz aplikację, musisz ponownie ustawić zmienną ścieżki klas.
Tak. Cytowany na stronie java(1)
człowieka:
-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 (.).
Zmienna środowiskowa * nie * jest aktualizowana w ogóle, zgodnie z tym. Nie widzę, jak odpowiedź brzmi "tak". –
@ S.Lott - Z którego punktu widzenia? Z * punktu widzenia * programu wartość CLASSPATH (jeśli istnieje) zostaje zastąpiona. Z * punktu widzenia * powłoki wartość CLASSPATH nie jest zmieniana. Myślę, że pierwotne pytanie było po prostu źle sformułowane. – Nate
Albo jedna z opcji jest używana, nie obu.
Określanie opcji -classpath lub -cp zastępuje dowolne ustawienie zmiennej środowiskowej CLASSPATH.
...
Opcja -classpath jest korzystny, ponieważ można ustawić indywidualnie dla każdej aplikacji bez wpływu na inne aplikacje i innych aplikacji bez zmiany jego wartości.
...
Ustawianie zmiennej CLASSPATH lub za pomocą opcji wiersza polecenia -classpath nadpisuje że domyślnie, więc jeśli chcesz dołączyć aktualny katalog w ścieżce wyszukiwania, należy uwzględnić " . " w nowych ustawieniach.
Użycie opcji -cp nie wpłynie na zmienną środowiskową CLASSPATH.
Można spróbować ten mały fragment kodu, aby to sprawdzić:
public class CPTest {
public static void main (final String[] args) {
String cp = System.getenv("CLASSPATH");
System.out.println(cp);
}
}
%echo $CLASSPATH
/home/test/:.
Wyjście bez opcji Cp:
%java CPTest
/home/test/:.
Wyjście z opcji Cp:
%java -cp /home/xanadu:. CPTest
/home/test/:.
Dane wyjściowe są takie same dla obu wywołań (jedna z -cp i jedna bez).
także albo ścieżka określono w zmiennej środowiska Classpath
stosować albo ścieżka określony z -cp możliwość użycia. To nie jest mieszanka zarówno jest jednym z nich.
Jest to widoczne z poniższej inwokacji. Jeśli CWD (bieżący katalog roboczy „”)
jest wyłączony z opcją Cp, wyrzutnia JVM (tj Java) nie można znaleźć klasy plik mimo zmiennej środowiskowej CLASSPATH zawierającej CWD
(„”) w tym.
%java -cp /home/test CPTest
Exception in thread "main" java.lang.NoClassDefFoundError: CPTest
- 1. Java URL Protocols: classpath: /?
- 2. Czy klasa java --classpath zastępuje CLASSPATH lub dołącza do niej?
- 3. dodać słoik do maven exec: java classpath
- 4. ustawienie ścieżki Java Classpath w systemie Linux?
- 5. Dodawanie biblioteki do Java CLASSPATH w Ubuntu
- 6. Jaka jest różnica między "classpath:" a "classpath: /" w Spring XML?
- 7. Opcja jasnego ekranu w java
- 8. Problemy z Jetty Classpath
- 9. Wildcard classpath @PropertySource
- 10. Classpath problem używając XPathFactory
- 11. Ant classpath Order
- 12. Dodawanie folderu do Eclipse classpath
- 13. Dlaczego nie używasz argumentu classpath?
- 14. Run SBT z -Ylog-classpath
- 15. file.separator Opcja Java 7 powoduje wyjątek ExceptionInitializerError
- 16. Obsługa mrówek dla java 9 addmods opcja
- 17. Rozwiązywanie Java classpath cholery w dziedzictwo junit testowego pakietu
- 18. Jak dodać źródło java na gradle buildscript classpath?
- 19. Dodawanie katalogu do tomcat classpath
- 20. java.nio.file.Path dla zasobu classpath
- 21. Zrozumienie deklaracji classpath Eclipse
- 22. sbt Zadanie classpath
- 23. Jackson Databind classpath issue
- 24. ustawienie JAVA_HOME & CLASSPATH w CentOS 6
- 25. OSGi: jak zapewnić spójność classpath?
- 26. Dodawanie .jar do classpath (Scala)
- 27. -statyczna opcja dla gcc?
- 28. Jak zaimportować projekt Java brakuje .project .settings .classpath pliki do eclipse
- 29. Problemy z log4.properties classpath
- 30. Embedded Jetty Server Classpath Issue
Dobre pytanie. Nigdy o tym nie myślałem – marionmaiden
Czy chcesz się dowiedzieć, czy zmienna środowiskowa została zmieniona? Czy uruchomiłeś test, aby faktycznie * zobaczyć * czy się zmienił? –
Dlaczego nie spróbować samemu? –