2010-09-11 17 views
19

Java ile ilgili deneyimim yok ve bu beni deli ediyor. Bir java programı FileManagement yazdım ve komut satırından çalıştırmam gerekiyor.Java Programını Komut Satırı'ndan Çalıştırma Linux

Ben bu klasördeki tüm sınıfları oluşturmak ama java FileManagement.Main çalıştığınızda diyor hangi javac FileManagement/*.java ile komut satırından derlemek olabilir

:

Exception in thread "main" java.lang.NoClassDefFoundError: FileManagement/Main

şey bir de bu aynı prosedürü denedi olmasıdır uzak bilgisayar ve iyi çalışıyor. Benim üzerinde çalışmıyor. senin Main sınıf FileManagement adlı paketin içinde ise

+0

http://www.skylit.com/javamethods/ faqs/javaindos.html yeni başlayanlar için iyi bir girişe sahiptir. – Pramod

+0

@Pramod. Bu bağlantı pencereler için olsa da ... – Larry

cevap

20

sonra deneyin:

java -cp . FileManagement.Main 

FileManagement klasörün üst klasörüne.

sizin Main sınıf FileManagement klasörüne bir paketin (varsayılan paketi) sonra cd değil ve deneyin:

java -cp . Main 
CLASSPATH'e ve nasıl JRE sınıfları bulmak konusunda

diğer bilgiler:

+0

Çalışma !!!! Çok teşekkürler. Sorun çözüldü – Altober

+0

@Altober, iyi. Sınıf yolunu biraz okumanı tavsiye ederim, bu yüzden neden işe yaramadığını biliyorsun. –

+0

Zaman ayırdığınız için teşekkür ederiz. – Altober

1

Sınıfınızın paket adı nedir? Hiçbir paket adı varsa, o zaman büyük olasılıkla çözümdür:

java -cp FileManagement Main 
+0

Zaman ayırdığınız için teşekkürler Bart K aynı çözümü verdi ve çalıştı. Tekrar teşekkürler Thomas – Altober

+1

Ana sınıf "Ana" (paketsiz) olarak adlandırıldıysa ve sınıf sadece "FileManagement" adlı dizinde olsaydı. Cd FileManagement ile aynıdır; java cp. Ana –

+0

Ah, üzgünüm, 'FileManagement' sınıf yoluna eklediniz. FileManagement 'i çalıştırmayı denediniz ve' Main 'komut satırı parametresi olarak vermeyi düşündünüz. –

5

Guys Felekten sözdizimi anlayalım. Geçerli direkte sınıf dosyası mevcutsa,

  1. java -cp. dosyaAdı

  2. Dizin içinde sınıf dosyası varsa. Ebeveyn Direktörüne gidin ve cmd'nin altına girin.

    java -cp. dir1.dir2.dir3.fileName

  3. dış kavanoz bir bağımlılık sonra varsa

    java cp:. ./ jarName1: Bu yardımcı olur ./ jarName2 fileName

    Umut.

1

(Bu KISS cevaptır.)

Diyelim ki birkaç var diyelim.geçerli dizinde java dosyaları:

$ ls -1 *.java 
javaFileName1.java 
javaFileName2.java 

en bir main() yöntemine sahip her biri diyelim (böylece programlar, kütüphaneleri değildir), sonra yapmalarını derlemek:

javac *.java -d . 

Bu şekilde üretecektir .java dosyaları "paketleri" olarak birçok alt klasörleri ilişkilidir. Aynı paket adına packageName altında içinde, bu yüzden sadece bir klasör bu adla oluşturulan tüm java dosyaları, bu nedenle bunların her yürütülecek benim durumda:

java -cp . packageName.javaFileName1 
java -cp . packageName.javaFileName2 
İlgili konular