java
ile -classpath
seçeneği kullanılacaksa, CLASSPATH
env değişkeninin içeriğini ekleyin veya değiştirin?Java -classpath seçeneği
cevap
Sınıf yolu değişkenini kullanarak, CLASSPATH of Environment değişkenini geçersiz kılar, ancak yalnızca bu oturum için. Uygulamayı yeniden başlatırsanız, tekrar classpath değişkenini ayarlamanız gerekir.
Evet. java(1)
adam sayfasından Alıntı:
-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 (.).
Ortam değişkeni buna göre * hiç güncellenmez *. Cevabın "evet" olduğunu anlamıyorum. –
@ S.Lott - Kimden bakış açısı? * Programın * bakış açısından CLASSPATH değeri (varsa) değiştirilir. * Kabuğun * noktasından CLASSPATH değeri değişmez. Bence asıl soru çok kötü bir şekilde yazılmıştı. – Nate
Ya seçeneklerden biri, ikisi değil kullanılır.
-classpath veya -cp belirtilmesi CLASSPATH ortam değişkeninin herhangi bir ayarını geçersiz kılar.
... Diğer uygulamaları etkilemeden ve değerini değiştirerek diğer uygulamalar olmaksızın her uygulama için ayrı ayrı ayarlayabilirsiniz çünkü -classpath seçenek tercih edilir
. Eğer arama yolunda geçerli dizini dahil etmek isterseniz içermelidir böylece
...
CLASSPATH'E değişkeni ayarlama veya -classpath komut satırı seçeneğini kullanarak ", yani varsayılan geçersiz kılar ." yeni ayarlarda.
-cp seçeneğinin kullanımı CLASSPATH ortam değişkenini etkilemez.
Bunu kontrol etmek için bu küçük kod parçacığını deneyebilirsiniz:
public class CPTest {
public static void main (final String[] args) {
String cp = System.getenv("CLASSPATH");
System.out.println(cp);
}
}
%echo $CLASSPATH
/home/test/:.
-cp seçeneği olmadan çıkışı:
%java CPTest
/home/test/:.
-cp seçeneğiyle çıkışı:
%java -cp /home/xanadu:. CPTest
/home/test/:.
Çıktı, her iki çağrı için de aynıdır (biri -cp ve bir tane olmaksızın).
Ayrıca her iki CLASSPATH'E ortam değişkeni belirtilen yol
kullanılmış veya -cp seçenek kullanılır ile yol belirtilirse olduğunu. 'un bir karışımı değildir, bunlardan biridir.
Bu, aşağıdaki çağrıda açıkça görülmektedir. CWD (Geçerli çalışma dizini "")
-cp seçenek dışında bırakılır , JVM başlatıcısı (yani java) (cwd içeren CLASSPATH'E ortam değişkeni rağmen
sınıf dosyayı bulamıyor "") içinde.
%java -cp /home/test CPTest
Exception in thread "main" java.lang.NoClassDefFoundError: CPTest
İyi soru. Hiç düşünmedim – marionmaiden
Ortam değişkeninin değişip değişmediğini bilmek ister misiniz? Gerçekten değiştiğine bir test yaptın * eğer * değiştiyse? –
Neden kendini denemiyorsun? –