Zastanawiam się, czy mogę skompilować w Javie 6, ale ktoś uruchamia program na Java 7, czy będzie używana wersja Arrays.sort Java 6 lub 7?Skompiluj w Javie 6, uruchom w 7 - jak określić useLegacyMergeSort?
To ważne, ponieważ nowa mergesort rzuca IllegalArgumentException, a stara nie (patrz Comparison method violates its general contract! Java 7 only)
Teraz jest to możliwe, aby skompilować w Java 7 za pomocą Arrays.useLegacyMergeSort, ale oczywiście, że flaga nie jest dostępne dla środowiska Java 6 - i chcemy być kompatybilne z Mac OS Snow Leopard (który używa 6).
Z jakiegoś powodu (patrz http://madbean.com/2006/target14/) -target flag kompilatora nie wydaje się produkować kod zgodny, więc wolimy skompilować w Java 6.
Wszelkie sugestie?
Opcja 'nieruchomość java.util.Arrays.useLegacyMergeSort' jest określony w czasie wykonywania , nie kompiluj. Jakie masz problemy podczas korzystania z maszyny wirtualnej Java 6? – Perception
Użyjesz wersji 7 na maszynie wirtualnej JVM w wersji 7, nawet jeśli skompilujesz ją w stosunku do wersji 6. Wystarczy ustawić właściwość System, aby zawsze używać sortowania wersji 6. – BevynQ
@Alex: jeśli nowy mergesort rzuca IAE, to dlatego, że twój kod jest nieprawidłowy, czy działa w Javie 6 czy Java 7. To, co powinieneś zrobić, to naprawienie tego problemu, w którym to momencie twój kod będzie działać tak samo w obu środowiska. –