4 Aralık 2007 Salı

Eclipse Europa ve "java.lang.OutOfMemoryError: PermGen space" hatası

0 yorum
Uzun zamandır, Eclipse 3.1 versiyonunu kullanarak geliştirme yaparken, yeni gelişmelerden faydalanabilmek için, Eclipse Europa (Eclipse 3.3) yı kurmaya karar verdim. Eclipse 3.3 'ün ilginç ve yararlı birçok özelliğini görüp, memnun kaldıktan sonra, geliştirmelerime, artık bu versiyonda devam etmeye karar verdim. Bunun üzerine eski eclipse'deki tüm tanımlarımı(claspath variables, ant builds vs.) yeni eclipse'e taşıyıp, geliştirmeme devam ettim. Fakat, bir süre çalıştıktan sonra, eclipse'in aniden(workspace'i kaydetmeden) kapanması ve yeniden açtığımda, yaptığım tüm tanım ve ayarlamaların kaybolması beni çileden çıkardı. Tam aldığım karardan pişman olup, eski eclipse'e dönecektim ki, eclipse'in, "..eclipse\workspace\.metadata\" dizinindeki ".log" dosyasına, aşağıdaki hatayı atarak kapandığını farkettim.

java.lang.OutOfMemoryError: PermGen space


Daha önceden, eclipse'i "..eclipse" dizinindeki "eclipse.ini" dosyasına aşağıdaki parametreleri de ekleyerek başlatıyordum.

-vmargs
-Xms512M
-Xmx1024M


Buradaki -Xmx değerini arttırmama rağmen sorun düzelmeyince, Internette bu hatayı kısa bir süre araştırdıktan sonra, sorunu yaşayan tek kişinin ben olmadığımı farkettim. Sorunun nedeni JVM'in data structure ve class tanımlarını sakladığı "permanentSpace" alanının dolmasıydı.

Sorunun çözümünde ise yukarıdaki parametrelere şunları da eklemem gerektiğini öğrendim.

-XX:PermSize=128M
-XX:MaxPermSize=128M


Buradaki parametreler için uygun bir değer belirledikten sonra, artık bu sorunu yaşamıyorum...


Yararlandığım Kaynaklar:


ali kemal taşçı


25 Ağustos 2007 Cumartesi

Bilgisayarda Saklanabilen Post-it Notlar(Stickies)

1 yorum
Yapmanız gereken işleri veya günlük koşuşturmaca da aklınıza gelen şeyleri unutmamak için, istediğiniz yere(genelde monitöre) yapışabilen post-it notları(hatırlatmaç :)) muhtemelen kullanmışsınızdır. Bu az yapışan kağıtlar sayesinde, not aldığınız şeylerin, zihninizde gereksiz yer işgal etmesini engellediğiniz gibi, unutulma riskini de azaltırsınız.
Yapıştırılan bu kağıtların miktarının artmasıyla oluşan kağıt kalabalığının, pek hoş bir görüntü arzetmediği rahatlıkla söylenebilir. Ayrıca uzun zaman yapışık kalan kağıtların da yapışkan özelliklerini kaybetmeleriyle birlikte düşüp kaybolması, sinir bozucu bile olabilir. Bu kağıtlara ödediğiniz paralar da cabası...
Bu olumsuzlukları yaşamamak için, post-it'in tüm özelliklerini taşıyan bilgisayar programlarını kullanabilirsiniz. Örneğin; Stickies , Post-it Software Notes Lite ,Post-it Digital Notes ...
Burada kullanmakta olduğum ve oldukça memnun kaldığım bir programdan, Stickies'den bahsetmek istiyorum. Stickies, post-it notlar gibi not alabildiğimiz, ve birçok faydalı özelliği üzerinde barındıran bir bilgisayar programıdır.
Programın tüm özellikleri ilgili bilgiler sitesinde ve yanında gelen dökümanında bulunmasına rağmen, en dikkatimi çeken ve hoşuma giden özelliklerini aşağıdaki gibi sıralayabilirim:
  • Stickies'e yazdığınız notları kaydetmek için bir şey yapmanıza gerek yoktur, otomatik kaydedilir,
  • Not alırken yaptığınız yanlışlıkları, word programında olduğu gibi, geri alabilirsiniz,
  • Notlara başlıklar yazabilir, bu başlıklara tıklayınca, ekranda daha az yer kaplamalarını sağlayabilirsiniz,
  • Notlar için, alarm kurup, istediğiniz gün, saat ve dakikada, ekranda titreyerek ve/veya ses çıkararak sizi uyarmalarını sağlayabilirsiniz,
  • Notlara devam eden alarmlar kurabilirsiniz. Örneğin, yazdığınız bir notun, her Cuma günü saat 16:45'te ekranda titreyerek ve/veya ses çıkararak sizi uyarmasını sağlayabilirsiniz,
  • Yazdığınız notları farklı bilgisayarlara herhangibir yolla(kopyalayarak, e-mail ile...) gönderebilir, farklı bilgisayarlardan bu şekilde notlar alabilirsiniz,
  • Notların renklerini ve yazı tiplerini değiştirebilirsiniz,
ali kemal taşçı

Eclipse'te Bookmark View Kullanımı

0 yorum
Geliştirdiğimiz uygulamalara(applications) yeni modül eklemeyi, varolan modülde değişiklik yapmayı(iyileştirme) veya hataların düzeltilmesini(bugfix) gerektiren projelerde görev aldığımızda, uygulamaya yeni dosyalar(.java, .jsp, .xml...) ekleriz veya varolan dosyalarda değişiklik yaparız. Daha sonra eklediğimiz veya değiştirdiğimiz dosyaların, uygulamanın bir sonraki sürümüyle birlikte uygulamaya katılmasını sağlarız. Bu gibi projelerde uygulamadaki birçok dosya ile çalıştığımız için, genellikle bir yerlere hangi proje için hangi dosyaları değiştirdiğimizi not ederiz. Böylelikle bir sonraki sürüm çıkışında veya ilgili projeye ait hataların düzeltilmesinde hangi dosyaları değiştirdiğimizi bulabiliriz.
Eğer Eclipse ile yazılım geliştiriyorsak, üzerinde değişiklik yaptığımız dosyaları bulmak çok daha kolay ve hızlı olabilir. Bunun için yapmamız gereken şey dosyalara işaret(bookmark) koymak olacaktır.
Örneğin; ABC adında bir uygulamamız olduğunu düşünelim. Bu uygulamada üzerinde Proje1 ve Proje2 adında iki çalışma yapılmış olsun. Proje1 çalışması sırasında uygulamadaki abc1.java, abc1.jsp ve web.xml dosyalarında, Proje2 çalışması sırasında ise uygulamadaki abc2.java, abc2.jsp ve yine web.xml dosyalarında değişiklik yapıldığını varsayalım.

Değiştirdiğimiz dosyaları kolayca bulabilmek için bu dosyalara işaret(bookmark) koyalım. Bunun için değiştirmek istediğimiz dosyayı açıp, menuden Edit> Add Bookmark' a tıklayalım.
Dosyaların sol taraflarındaki gri alana sağ tıkladığımızda da Add Bookmark menusu çıkacaktır. Bu durumda bookmark'ı istediğimiz satıra koyabiliriz.

Açılan kutucukta, bookmark ismi olarak üzerinde çalışma yapılan proje isimlerini yazalım.

Artık işaret konulmuş dosyaların sol tarafında kitap ayracı sembolü gözükecek ve bu sembolün üzerine gelince de işaretin ismi gözükecek.

Bu şekilde diğer dosyalara da işaret koyduktan sonra, sıra esas işi yapan bookmark view'ı görünür hale getirmeye geldi. Bunun için menüden Window>Show View> Other'a tıklayıp, açılan kutucukta Bookmarks'ı seçelim.

Açılan Bookmark View'da işaret koyduğumuz dosyaları görebiliriz.

Bookmark View'a ait filtrede Where description contains alanına istediğimiz proje ismini yazarsak sadece istediğimiz projeye ait değiştirilen dosyaları listeleyebiliriz.
Değiştirdiğimiz dosya sayısının ve projelerin çok fazla olduğu durumlarda bu yöntemin işimizi fazlasıyla kolaylaştıracağını söyleyebilirim.

.class dosyası hangi jar içindedir acaba?

1 yorum
Yeni bir java projesinde çalışmaya başladığımızda, projeyi kendi çalışma ortamımızda çalıştırırken, eğer classpath ayarlarını doğru yapmamışsak aşağıdakine benzer bir hata almamız muhtemeldir.

java.lang.NoClassDefFoundError: org/apache/struts/action/ActionForm

Genellikle bulunamayan bu .class dosyası bir jar dosyası içindedir ve bu jar dosyasının classpath'e eklenmesi ile sorun çözülür. Burada esas mesele bu .class dosyasının hangi jar içinde olabileceğini bulmaktır.

Böyle bir durumda, http://javacio.us/ 'un sunduğu ücretsiz servis işimize yarayabilir.

Bunun için yapmamız gereken adımları aşağıdaki gibi sıralayabiliriz.

1- http://javacio.us/ sayfasına girerek servise abone olmalıyız.




2- Bu servise Google hesabımızı kullanarak abone olabiliriz. Eğer yoksa Google'da yeni bir hesap oluşturmak gerekecektir.




3-Google hesabımıza girdikten sonra servise abone oluruz.




Bundan sonra istediğimiz zaman, Google'da, hataya neden olan .class dosyasını paket adı(örn. org.apache.struts.action.ActionForm) ile birlikte yazarak hangi jar dosyasında olabileceğini bulabiliriz. Bu arada bu servisten yararlanabilmek için Google hesabımıza giriş yapmayı(Sign-in) unutmamak gerekir.






ali kemal taşçı