JDK7 kullanıyor ve buna ek olarak da Collections.sort metodunu kullanıyorsanız elinizde pimi çekilmiş bomba var demektir :D; çünkü JDK7 ile beraber sort metodu artık exception verebilir hale geldi ve beklemediğiniz anda ortaya çıkabilir. Eğer JKD5 JDK6 gibi versiyonlardan JDK7 ye geçtiyseniz ve
java.lang.IllegalArgumentException: Comparison method violates its general contract
hatasını alıyorsanız, yapmanız gereken şey sort işlemi için önceki versiyonlarda kullanılan algoritmayı aktif hale getirmek bunu da
java.util.Arrays.useLegacyMergeSort
özelliğini true yaparak sağlayabilirsiniz. Bunu yapmak için iki yöntem var. Birincisi kod içerisine
System.setProperty(“java.util.Arrays.useLegacyMergeSort”, “true”);
satırı eklemek. İkinci yöntem ise run parametresi olarak
-Djava.util.Arrays.useLegacyMergeSort=true
vermektir. Artık uygulamanız JDK7 içerisinde sort metodunu önceki versiyon algoritmalarını kullanarak çağıracaktır.
Bol Java’ lı günler dileğiyle…
7 Responses
Teşekkür ederim.. Aradığım şeyi buldum
Iyi calismalar 😀
Peki bu kodu tam olarak nereye koymak gerekiyor. Collection kodunu kullandığım javaya ekledim hata almaya devam ediyorum.
Projenizin main metodunda ilk satıra yerleştirmeyi deneyin. Eğer hata almaya devam ederseniz ve geri dönüş yaparsınız sevinirim. İyi çalışmalar :D.
Selam Faruk,
Hata tekrar geliyor malesef. Projemde çok class var. Kodu başlangıç metoduna koydum. Collection metodunu diğer classda kullanıyorum. Acaba direk Collections.sort.. diye kullanmamak mı gerekiyor?
public static void main(String[] args) {
System.setProperty(“java.util.Arrays.useLegacyMergeSor”, “true”);
.
.
}
Eğer kodu burada yazdığın gibi kullanıyorsan t harfi eksik kalmış.
System.setProperty(“java.util.Arrays.useLegacyMergeSor”, “true”);
Doğrusu
System.setProperty(“java.util.Arrays.useLegacyMergeSort”, “true”);
olmalı. Doğru yazdığından eminsen bir de yazıda belirttiğim gibi parametre olarak kullanmayı dene. Bakalım hata tekrar edecek mi?
İyi çalışmalar 😀
Çok teşekkür ederim, sorunun kaynağı başkaymış. Bu yukarıdaki hata kesildi 😉 İyi çalışmalar.