java kütüphaneyi ana pakete dahil etme

Başlatan nalcam22, 09 Nisan 2014 - 20:30:39

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

nalcam22

Merhaba arkadaşlar javada bir kütüphaneyi ana pakete nasıl dahil ederim yani eclipseye değilde ana pakete dahil edicem çünkü jsp dede kullanıcam.java maili indirdim fakat içinde farklı dosyalar var mesela mail jar var demo var docs var lib var bunların hangisi nereye atıcam tarif ederseniz sevinirim.hem ubuntu hem windows için açıklarsanız sevinirim.

sem

Eclipse'e değil de ana pakete dahil etmek istiyorum demişsiniz, ana paket ile kastınız nedir?
".NET çemberinden geçen lirisist etkisi bir 'Volcano', bir yüzüm Java bir yüzüm Badalamenti Don Tano"
----------------------------------------------------------------------------------------------------------------------
"Her yer ölüm yine, burası dünya
Derken ölüm bile bu nasıl dünya?
Benden ölüm dile, batıyor gün yine
Burası dünya?

nalcam22

java kütüphanelerinin arasına jspdede kullanmak için

WhiteScars

Java programlarında kullandığınız ekstra kütüphaneleri classpath'e ekleyerek kendi programınıza dahil edebilirsiniz. Örneğin;

java -cp some_lib.jar;program.jar packet.ismi.main.class

İnsanoğluna bırakabileceğiniz en güzel miras tecrübelerinizdir.

nalcam22

Alıntı yapılan: WhiteScars - 23 Nisan 2014 - 03:37:00
Java programlarında kullandığınız ekstra kütüphaneleri classpath'e ekleyerek kendi programınıza dahil edebilirsiniz. Örneğin;

java -cp some_lib.jar;program.jar packet.ismi.main.class


teşekkürler peki aynı işlemi windowsta nasıl yapabilirim?

if

Konu çözüldü ise çözüldü etiketi alayım: cozuldukonusu

WhiteScars

Dün gece geç vakitte yazmışım. Yazdığım cevapta yanlışlık var. Bugün ayık kafa ile tekrar bir toparlayım.

Öncelikle java uygulamalarında kütüphane kullanımı çok esnektir. Bu iş için 2 yöntemi size sunabilirim. Bunlar basit olanlar:

1. Yöntem bütün programınızı tek bir JAR haline getirip, kütüphanelerinizide bu JAR içine koyabilirsiniz. Manifest dosyası içinde main class'ın nerde olduğunu gösterip işi bitirebilirsiniz. Bu yöntem "Executable JAR" olarak geçer ve windows üzerinde iki defa tıklanıldığında programınız çalışır. Bunun dezavantajı, bir kütüphane değiştirmek istediğinizde (sürüm yükseltme vs) bütün programı tekrar JAR haline getirmeniz gerekmesidir. Bu yöntem küçük programlar için uygulanmalı. Zira büyük programlar için kütüphaneleri ayrı dizinde tutmak her zaman daha iyidir. Bu işi eclipse te "Export -> Runnable JAR file" ile yapabilirsiniz. Zor değil. Launch Configuration kısmına programınızın main methodunun olduğu class'ı göstermeniz gerekir.

2. Yöntem biraz daha sofistike olan. Kullandığınız her kütüphane aslında çalıştırdığınız programda classpath'e (buildpath diyede geçer) ekleniyor. Eclipse bu işi otomatik olarak yapıyor. O yüzden bir çok geliştirci bunu nasıl ayarlayacağını pek bilmez. O yüzden Executable JAR daha kolayına gelir.

Basitçe diyelimki 2 tane kütüphaneniz var. Bunlar A.jar, B.jar olsun. ve siz kendi uygulamanızın C.jar olduğunu farzediyorum. Bu durumda komut satırına aşağıdaki gibi bir komut yazabilirsiniz. C.jar içinde programınızın main methodunun olduğu paketin şöyle olduğunu farzediyorum. com.baturman.crawler.Launcher ve şöyle bir dizin yapısı olduğunu farzediyorum.

program/libs/A.jar
program/libs/B.jar
program/C.jar
program/configuration.properties

öncelikle program dizininin içinde olmanız gerekiyor.

java -classpath libs/A.jar:libs/B.jar:C.jar com.baturman.crawler.Launcher

-classpath veya -cp kullanabilirsiniz.

iş windows'a geçince az biraz farklılaşıyor.

Öncelikle slash'lara dikkat etmeniz gerekiyor. forward slash (/) back slash oluyor (\) ve birde linux'te ":" ile ayırdığımız kütüphaneleri windows'ta ";" ile ayırıyoruz.

yukardaki örnek için (test edilmemiştir, windows üzerinde pek çalışmadım tam olarak hatırlamıyorum)

java -cp libs\A.jar;libs\B.jar;C.jar com.baturman.crawler.Launcher

şeklinde çalıştırabilirsiniz.

Classpath ile ilgili bir kaç özellik anlatayım. Zira bunlar bir problemin çözümüne yardımcı olabilir.

1. Yukarda örnekte verdiğim komutu daha kısa yazabilirsiniz. libs/* şeklinde yazdığınızda libs klasörü içindeki bütün jar dosyaları classpath'inize eklenir. Fakat ben bunu tavsiye etmiyorum. Nedenine gelince burda kütüphanelerin yazım sırası önemli. Hangisi önce gelirse o ilk load olur. Örneğin diyelimki elinizde A5_2.jar var sürümü 5.2, bir tane daha A5_3.jar var. Bunlar aynı kütüphane olduğu için class yapıları içinde aynı olacaktır. Eğer classpath'te A5_2.jar önde yazılırsa, A5_3.jar hiç bir zaman kullanılmaz. Bu tehlikeli gözüksede aslında çok güzeldir. Örneğin programınıza patch bu şekilde hazırlayabilirsiniz. Detayına girmeyeceğim ama patch ben bu şekilde yazıyorum.

2. Bazen jar dışında dosyalarıda classpath'e eklemek gerekebilir (konfigurasyon gibi). Bu gibi durumlarda bütün properties dosyalarını conf dizini altına alıp ":conf"  şeklinde bütün dizini classpath'e ekleyebilirsiniz. Zira düz dosya ekleyemiyor olmanız lazım classpath'e.

Aklıma gelenler bunlar şimdilik.


İnsanoğluna bırakabileceğiniz en güzel miras tecrübelerinizdir.