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…

Categories:

7 Responses

  1. Peki bu kodu tam olarak nereye koymak gerekiyor. Collection kodunu kullandığım javaya ekledim hata almaya devam ediyorum.

  2. 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.

  3. 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”);
    .
    .
    }

  4. 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 😀

  5. Çok teşekkür ederim, sorunun kaynağı başkaymış. Bu yukarıdaki hata kesildi 😉 İyi çalışmalar.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.