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.