Java JAR Dosyası Yaratma

Daha önceki yazımda, JAR dosyası hakkında kısaca bilgi vermeye çalışmıştım. Bu yazıda, komut satırından, java uygulaması için nasıl jar dosyası yaratılacağını anlatmaya çalışacağım.İlerleyen yazılarda da jar dosyası ile ilgili gelişmiş özelliklerden bahsetmeyi düşünüyorum.

Öncelikle jar olarak oluşturacağımız sınıfı tanımlayalım:

// JARClass.java
public class JARClass {
    public static void main(String [ ] args) {
        System.out.println("Java JAR Dosyası Yaratma");
    }
}

Ve tabii ki derleme komutu:

javac JARClass.java

JAR Dosyası Komutu ve Parametreleri

Şimdi basitçe, çok detaya girmeden, jar dosyası yaratmak için gerekli komutu görelim:

jar cf JARClass.jar *

Burada jar komutundan sonraki parametreler sırasıyla şu anlamlara geliyor:

  • c; jar dosyası yaratacağımızı belirtir ifade (create)
  • f; jar dosyasını bir dosyaya yaratacağımızı belirten ifade (f yazmayıp, dosya ismi belirtmez isek, konsola jar içeriğini basıyor).
  • JARClass.jar; yaratmak istediğimiz jar dosyasının adı
  • *; ifadesi şuan bulunduğumuz klasör ve tüm alt klasördeki dosya ve klasörleri jar dosyasına eklemeye yarıyor. Ve tabii ki bu parametre yerine dosya isimleri yazılarak, sadece istenilen dosyalar eklenebilir.
jar cf JARClass.jar JARClass.class JARClass.java

Diğer Parametreler

Kullanılabilecek belli başlı diğer parametrelerden de bahsetmeye çalışayım:

  • t; belirtilen jar dosyasının (f parametresi ile kullanıldığında) içerisinde bulunan dosyaları belirtir.
jar tf JARClass.jar
  • v; jar dosyası yaratılırken, konsola dosya içeriği ve sıkıştırılma oranları gibi bilgileri basar.
jar cfv JARClass.jar *
  • 0 (sıfır); jar dosyası yaratılırken, dosyaların sıkıştırılmamasını sağlar.
jar cf0 JARClass.jar *
  • M; manifest dosyasının yaratılmamasını sağlar (bu dosyadan birazdan kısaca bahsedeceğim).
jar cfM JARClass.jar *
  • m; harici olarak manifest dosyasının içeriğinin belirtilmesini sağlar (normalde otomatik olarak oluşuyor).
jar cfm manifest.mf JARClass.jar *
  • -C; istenilen klasöre gidilebilmesini sağlar. Örneğin, class dosyasının yanında audio diye klasör olduğunu ve onun içinde de main.wav dosyası bulunduğunu varsayalım. Bu komut sayesinde, main.wav dosyasını jar dosyasına audio klasörü içinde değil de, doğrudan ana dizine eklemesini sağlamış oluyoruz. Aşağıdaki örnekte, ana dizindeki JARClass.class dosyasını ve audio dizini içindeki tüm dosyaları (. ile sağlıyoruz) jar dosyasına eklemiş oluyoruz.
jar cf JARClass.jar JARClass.class -C audio .

JAR Dosyası Nasıl Çalıştırılır?

Şimdi JARClass uygulamamızı nasıl çalıştıracağımızı görelim.

java -jar JARClass.jar

Komutu çalıştırdığımızda bize ana sınıfın ne olduğunu bilmediğinden bahsedecek. Yani, uygulama hangi sınıfın main metodundan başlayacağını bilmiyor. Hemen basitçe bir manifest dosyası yaratıyoruz.

// manifest.mf
Main-Class: JARClass

Dosya uzantısının bir önemi yok. Uzantısız da yaratabilirsiniz. Şimdi, jar dosyasını manifest dosyasıyla tekrar yaratalım.

jar cmf manifest.mf JARClass.jar JARClass.class

Bu komutta m parametresinin f parametresinden önce gelmesine dikkat edilmeli. Komut, sonraki parametreleri ona göre işliyor.

Uygulamayı,

java -jar JARClass.jar

komutuyla tekrar çalıştırmak istediğimizde, artık düzgün bir şekilde çalışmış oluyor.

Manifest dosyası ile ilgili detay bilgileri başka bir yazımda detaylı bir şekilde vermek istiyorum. Şimdilik konu burada kalsın. Herkese iyi çalışmalar.