Java’nın Jar Aracını Kullanarak Jar Dosyası Oluşturma

Malum “jar”, Java’nın arşiv formatıdır. Jar formatında arşiv oluşturmak için gerekli araç “jar” ve diğer Java araçları her JDK kurulumunda vardır ve yerleri de yine malumunuz olduğu üzere JDK’nın bin klasörüdür. Projemize üçüncü el bir bileşen (third party component) eklemek istediğimizde o bileşenin jar dosyalarını classpath’e koymamız yeterlidir. (JDK’le birlikte gelen Java SE’nin bileşenleri de zaten jar dosyası olarak, örneğin rt.jar, makinamıza kopyalanırlar.) Bu en sık yaptığımız işlerdendir. Hatta o kadar ki Java projelerinde kod yazmak değil ama uygun jar sürümlerini bulup bir araya getirmek çoğu zaman daha zor olabilir 🙂

Zaman zaman “jar dosyası nasıl oluşturulur” şeklinde sorularla karşılaşıyorum. Bu yazıda hızlıca hem çalıştırılabilir (executable) hem de çalıştırılabilir olmayan jar arşiv dosyaları nasıl oluşturuluru anlatacağım.

Jar dosyası oluşturmak için gerekli adımları şöyle listeleyebiliriz.

  • Masaüstünüzde “Selam” isimli bir klasör açın. Benim makinamda bu “/Users/akin/Desktop/Selam” şekilde bir yola sahip olacaktır.
  • Bu klasörde Selam.java and SelamTest.java isimli iki Java kaynak kodu dosyası yaratın. Bu sınıfları buradan alabilirsiniz. Bu iki sınıfın da “org.javaturk.oop.ch01” şeklinde bir pakete sahip olduğuna dikkat edin.
  • Bulunduğunuz klasorde “bin” isimli bir başka klasör oluşturun. Derlenmiş class dosyalarımızı buraya koyacağız.
  • Sonra bir terminal ya da command line (CMD) açıp Selam klasörüne gidin.
  • Sonra bu iki kaynak kodu derlemek için ya şu iki satırı
javac -d ./bin SelamTest.java
javac -classpath ./bin -d ./bin SelamTest.java

ya da bu satırı yazıp çalıştırın:

javac -classpath ./bin -d ./bin *.java

Bu satırlar kaynak kodlarını derleyip, ilgili paket yapısını oluşturacak şekilde class dosyalarını karşı gelen klasörlere yerleştirecektir. Artık Selam’ın altında şöyle bir klasör yapımız var:

bin
|
|__org
    |
    |__javaturk
         |
         |__ oop
              |
              |__ch01
              |
              |__Selam.class
              |__SelamTest.class

  • Sonra “/Users/akin/Desktop/Selam” klasöründe aşağıdaki satırı çalıştırın.
jar cvf Selam.jar -C bin/ .

Bu satır “Selam.jar” isminde bir jar dosyası yaratacaktır. Jar dosyasının içeriği ise “bin” dosyasının altındaki klasör ve dosyalardan oluşacaktır.Zaten terminalde “jar” dediğinizde size “c”nin yeni bir jar dosyası yaratmak için, “v”nin jar komutunun çalışması sırasında neler yaptığını çıktı olarak yazması için, f’nin de “Selam.jar” ismin kullanması içın verildiğini anlarsınız. Jar yaratırken en fazla yanlış yapılan nokta, jarın içine girecekleri belirttiğiniz yerdir. Unutmayın “-C”, jar aracından, kendinden sonra gelen “bin/” klasörüne gitmeyi istemektedir. En sondaki “.”yi kesinlikle unutmayın. Eğer o noktanin ilk etapta yanlış yazıldığını düşündüyseniz lütfen bu yazıyı okumayı bırakıp, en temel MS-DOS, Unix ya da Linux kitabı edinip, baştan 20-30 sayfa okuyun. Zira genel olarak “.” bulunduğunuz klasörü, “..” ise bulunduğunuz klasörün ebeveynini gösterir ki bu yazıyı okuyorsanız, bu bilgiyi şu ana kadar öğrenmiş olmanız gerekirdi. Artık elinizdeki Selam.jar dosyasını projelerinizde kullanabilirsiniz. Yapacağınız şey, Selam.jar’i projenizin classpath’ine koymak. Ant ya da Maven gibi yapılar kullanıyorsanız, yapmanız gereken, onların kendi ayarlarını kullanarak Selam.jar’ın olması gereken yere örneğin repositorye gitmesini sağlamaktır. Projenizde kod olarak artık “Selam selam;” gibi bir satır yazdığınızda “import” anahtar kelimesini kullanarak “org.javaturk.oop.ch01.Selam” sınıfı ulaşılır hale gelecektir.

Peki oluşturduğumuz Selam.jar dosyasını nasıl çalıştırılabilir (executable) yaparız? Bir jar dosyasının çalıştırılabilir olması, içinde main metoda sahip olan sınıfın main metodunun çağrılması demektir. Bunun için Selam.jar oluşturulurken içine, main metoda sahip sınıfı ki bizde SelamTest, gösteren bilgi geçilmelidir. Bu bilgi jar aracına “e” ile geçilebilir. Yani şöyle bir satır gereklidir:

jar cvfe Selam.jar org.javaturk.oop.ch01.SelamTest -C bin/ .
 

Bu durumda oluşan Selam.jar dosyasının içine bakarsanız, META_INF klasörünün altında MANIFEST.MF isimli bir dosya olduğunu ve icinde de şu satırların olduğunu görürsünüz:

Manifest-Version: 1.0
Created-By: 1.8.0 (Oracle Corporation)
Main-Class: org.javaturk.oop.ch01.SelamTest


Artik teminalde

java -jar Selam.jar
 

yazarak “Selam Ali :)” çıktısını görebilirsiniz.

Bu jar dosyasını, classpath’e koyup, diğer projelerde kullanılmasını da sağlayabilirsiniz. Ya da işletim sisteminizde bu dosyaya çift tıklayarak java tarafından çalıştırılmasını sağlayabilirsiniz.

Benzer işler için Eclipse, Netbeans vb.geliştirme ortamlarını kullanabileceğiniz gibi Ant gibi araçları da kullanabilirsiniz.

Ayrıca konu ile ilgili Java Tutorial‘da da güzel ve geniş açıklamalar var.

Bol jar’lı günler dilerim 🙂

Toplam görüntülenme sayısı: 6182