2010-01-29 7 views
16

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

+3

İyi soru. Hiç düşünmedim – marionmaiden

+1

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? –

+0

Neden kendini denemiyorsun? –

cevap

14

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.

+1

Mükemmel. Kısa bir cevap için teşekkürler girienie. Bir Java uzmanı olmalısınız :) – Zacky112

+0

@ Zack112: Çok önemli bir soru .. Teşekkürler :) – giri

5

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 (.). 
+2

Ortam değişkeni buna göre * hiç güncellenmez *. Cevabın "evet" olduğunu anlamıyorum. –

+2

@ 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

6

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.

6

-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