Java'da JAR
Derlenmiş sınıf dosyalarını bir jar içinde paketleyin; tek dosya olarak gönderip çalıştırın. Pack.java içinde public sınıf Pack kalsın, main içinden packed yazdırın, javac Pack.java ile derleyin, sonra jar --create --file Pack.jar Pack.class ile Pack.jar oluşturun. java -cp Pack.jar Pack ile çalıştırın; ekran packed gösterir. İkinci demoda shipped yazılır ve Main-Class adlandıran bir jar kullanılır; böylece java -jar Pack.jar çalışır. Bu ders jar paketlemedir; JUnit @Test kontrolü veya Records accessor yazdırması değildir.
Tek jar, -cp ile çalıştırma
Pack.java dosyasını açın. Public sınıf adı Pack kalsın. Jar hikâyesini gömen kalan SumCheck JUnit assert'lerini, Card Records demolarını, Pipe Streams boru hatlarını ve Cue lambda gezintilerini silin. Öğretim dosyası paketlediğiniz küçük bir main programıdır; assertEquals test sınıfı değildir.
Pack.main içinde tek kelime yazdırın:
System.out.println("packed");
Önce derleyin:
javac Pack.java
Parantezler uyunca javac sessiz kalır ve Pack.class yazar. Sonra sınıf dosyasından jar oluşturun:
jar --create --file Pack.jar Pack.class
Sınıfı jar üzerinden classpath'te çalıştırın:
java -cp Pack.jar Pack
Ekran packed gösterir. Bu öğretim şeklinde gevşek sınıflardan java Pack başlatmazsınız. JVM'den Pack'i Pack.jar içinden yüklemesini istersiniz.
public class Pack {
public static void main(String[] args) {
System.out.println("packed");
}
}
Yolu bir kez adım adım gezin. javac Pack.java Pack.class üretir. jar --create --file Pack.jar Pack.class o sınıfı Pack.jar içine koyar. java -cp Pack.jar Pack Pack.main başlatır. println packed yazar. Hiç @Test çalışmaz. Hiç t.name() çalışmaz. Hiç stream().map çalışmaz.
Klasöre bakarken acemi kuralını söyleyin: kaynağı derle, jar'ı .class dosyasından oluştur, -cp ve public sınıf adıyla çalıştır. Bu sayfada Pack.java içine JUnit kontrolü uydurmayın. jar'ı ikinci derleyici sanmayın — javac hâlâ sınıfı üretir; jar yalnızca paketler.
Kalan SumCheck dosyasından yeşil JUnit raporu görüyorsanız Pack'e geçin ve packed satırını koruyun. jar Pack.class bulamıyorsa arşiv oluşturmadan önce yeniden derleyin.
Main-Class jar, -jar ile çalıştırma
Aynı public sınıf Pack kalsın. İkinci öğretim şeklini adlandırmayı kolaylaştırmak için yazdırmayı değiştirin:
System.out.println("shipped");
Yeniden derleyin:
javac Pack.java
Giriş sınıfını kaydeden jar oluşturun:
jar --create --file Pack.jar --main-class Pack Pack.class
Jar launcher ile çalıştırın:
java -jar Pack.jar
Ekran shipped gösterir. --main-class Pack jar'a hangi public sınıfın main tuttuğunu söyler. java -jar o girişi okur ve başlatır. Her öğretim şekli için tek net yazdırma tutun; ekran kelimesi kolay adlansın.
public class Pack {
public static void main(String[] args) {
System.out.println("shipped");
}
}
Yolu bir kez adım adım gezin. javac Pack.java Pack.class tazeler. jar --create --file Pack.jar --main-class Pack Pack.class sınıfı paketler ve giriş adını saklar. java -jar Pack.jar Pack.main başlatır. Ekran shipped gösterir. İki demoyu iki öğretim şekli olarak tutun. Önce packed isteyen -cp çalıştırmasını kanıtlayın. Sonra shipped isteyen -jar çalıştırmasını. Her iki şekilde ortak public sınıf Pack ve jar --create --file alışkanlığı vardır.
--main-class almayan bir jar üzerinde java -jar Pack.jar çalıştırırsanız launcher düşer; giriş sınıfı kayıtlı değildir. Başarısız jar ikinci öğretim dosyası değildir. İkinci öğretim dosyası --main-class Pack içerir.
JAR alışkanlıkları
Oluşturma, classpath çalıştırma, Main-Class ve -jar çalıştırma acemi için ayrı adımlar kalır.
📊 JAR habits for Pack
| Alışkanlık | Şekil | Acemi kontrolü |
|---|---|---|
| Oluşturma | jar --create --file Pack.jar Pack.class |
Pack.class dosyasını Pack.jar içine koyar |
| Classpath çalıştırma | java -cp Pack.jar Pack |
birinci demoda ekran packed gösterir |
| Main-Class | jar --create --file Pack.jar --main-class Pack Pack.class |
giriş sınıfı Pack olarak saklar |
| Jar çalıştırma | java -jar Pack.jar |
ikinci demoda ekran shipped gösterir |
| Önce derleme | javac Pack.java |
jar'ı yeniden oluşturmadan önce .class tazele |
JAR, JUnit ve Records değildir
JUnit kontrolleri @Test ile işaretler ve beklenen değerleri karşılaştırırdı. Records, accessor ile yazdırdığınız sıkışık bileşenler tutardı. JAR sınıf dosyalarını gönderme ve çalıştırma için paketler. Bu üç işi bugün tek acemi dosyasında karıştırmayın.
Buradaki packed, -cp ile jar çalıştırmasında Pack.main'den gelen birinci demo ekran kelimesidir. assertEquals(5, ...) değildir; Tag record'undan t.name() değildir. Kalan SumCheck dosyası hâlâ beklenen 5'ten bahsediyorsa bunu geçmiş bırakın; Pack'in yazdırma satırını koruyun.
javac olmadan paketlenecek taze Pack.class yoktur. jar --create olmadan Pack.jar yoktur. Main-Class'lı -cp veya -jar yolu olmadan bu dersin çalıştırma şekillerini göstermediniz. JUnit annotation'larını bu sayfadan uzak tutun. Record başlıklarını bu sayfadan uzak tutun.
Son isteğe bağlı sayfada klasör kontrolü
Başarılı oluşturma sonrası klasörü listeleyin. Pack.java, Pack.class ve Pack.jar birlikte görünmeli. Kaynağı düzenleyin, kaydedin, javac Pack.java çalıştırın, aynı create alışkanlığıyla jar'ı yeniden oluşturun, sonra tekrar çalıştırın. Düzenlemeden sonra create atlanırsa bayat jar değişen yazdırmayı gizleyebilir.
jar eksik sınıf dosyasından şikâyet ediyorsa önce derleyin. java -cp Pack.jar Pack hiçbir şey yazdırmıyorsa main'in hâlâ println çağırdığını doğrulayın. java -jar Pack.jar main manifest attribute yok diyorsa --main-class Pack ile yeniden oluşturun.
SumCheck'ten @Test yapıştırıp Pack'e koymayın. Card'dan record Tag yapıştırıp paketlemenin yerine koymayın. İsteğe bağlı JAR işi, -cp veya -jar ile çalıştırdığınız sınıf dosyası arşividir.
İsteğe bağlı yolun sonu
Public sınıf Pack tutabilir, packed yazdırabilir, javac Pack.java ile derleyebilir, jar --create --file Pack.jar Pack.class ile Pack.jar oluşturabilir, java -cp Pack.jar Pack çalıştırabilir, sonra shipped yazdırıp --main-class Pack ile yeniden oluşturup java -jar Pack.jar çalıştırabilirsiniz. Tablo create, classpath, Main-Class ve jar çalıştırmayı ayırır. Bu, kurs haritasındaki son isteğe bağlı Java sayfasıdır.
Net paketleme çifti için Pack demolarını tutun. Jar pratiğinde SumCheck JUnit dosyalarını bu sayfadan uzak tutun. Jar pratiğinde Card Records dosyalarını bu sayfadan uzak tutun. Bu sayfada yeni isteğe bağlı konu uydurmayın — harita burada biter. Bu alışkanlıklar isteğe bağlı yolun kontrol noktasıdır. İlk çalıştırma packed veya ikincisi shipped gösterdiğinde JAR bu ders için görevini yapmıştır.
Klasörde son tur: bir public Pack, eşleşen .class, Pack.jar mevcut, create komutu hatırlanır, açık tuttuğunuz demoya uygun -cp veya -jar çalıştırması, Scanner beklemesi yok, assertion gerekmez. Derleyin, jar'ı yeniden oluşturun, açık demoda bir kez daha çalıştırın. Ekran hâlâ packed veya shipped gösteriyorsa JAR şekli sağlamdır ve isteğe bağlı Java yolu tamamlanmıştır. Her okumada tek net paketleme alışkanlığı tutun; her tur aynı haritayı öğretsin.
🧠 Bilginizi Test Edin
Bilginizi Test Edin
Bu interaktif sınavla kendini test et ve konuyu ne kadar iyi anladığını gör
📝 Talimatlar
- Her soruyu dikkatle okuyun
- Her soru için en iyi cevabı seçin
- Quiz'i istediğiniz kadar tekrar alabilirsiniz
- İlerlemeniz üstte gösterilecek