問題
MabiIccoの起動時に下記のエラーメッセージがでて、起動完了しないことがあるようです。
Comparison method violates its general contract!
このエラー自体はsort関数ででるもののようですが、MabiIccoの起動時おいては直接使ってはいないので別経路での問題らしい。
発生しない場合の方が多く、発生する環境においては100%発生します。
発生する環境を持っている方にエラー時のログをとってもらいました。
java.lang.IllegalArgumentException: Comparison method violates its general contract!
at java.base/java.util.ComparableTimSort.mergeHi(Unknown Source)
at java.base/java.util.ComparableTimSort.mergeAt(Unknown Source)
at java.base/java.util.ComparableTimSort.mergeForceCollapse(Unknown Source)
at java.base/java.util.ComparableTimSort.sort(Unknown Source)
at java.base/java.util.Arrays.sort(Unknown Source)
at java.desktop/sun.awt.shell.Win32ShellFolderManager2.get(Unknown Source)
at java.desktop/sun.awt.shell.ShellFolder.get(Unknown Source)
at java.desktop/javax.swing.plaf.metal.MetalFileChooserUI$DirectoryComboBoxModel.addItem(Unknown Source)
at java.desktop/javax.swing.plaf.metal.MetalFileChooserUI.doDirectoryChanged(Unknown Source)
at java.desktop/javax.swing.plaf.metal.MetalFileChooserUI$5.propertyChange(Unknown Source)
at java.desktop/java.beans.PropertyChangeSupport.fire(Unknown Source)
at java.desktop/java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source)
at java.desktop/java.beans.PropertyChangeSupport.firePropertyChange(Unknown Source)
at java.desktop/java.awt.Component.firePropertyChange(Unknown Source)
at java.desktop/javax.swing.JFileChooser.setCurrentDirectory(Unknown Source)
at jp.fourthline.mabiicco.FixFileChooser.setCurrentDirectory(Unknown Source)
at java.desktop/javax.swing.JFileChooser.<init>(Unknown Source)
at java.desktop/javax.swing.JFileChooser.<init>(Unknown Source)
at jp.fourthline.mabiicco.FixFileChooser.<init>(Unknown Source)
at jp.fourthline.mabiicco.ActionDispatcher.initializeFileChooser(Unknown Source)
at jp.fourthline.mabiicco.ActionDispatcher.initialize(Unknown Source)
at jp.fourthline.mabiicco.MabiIcco.initialize(Unknown Source)
at jp.fourthline.mabiicco.MabiIcco.start(Unknown Source)
at jp.fourthline.mabiicco.MabiIcco.main(Unknown Source)
解決方法
あやしいのはこれです。
sun.awt.shell.Win32ShellFolderManager2.get(Unknown Source)
これもキーワードにして探すとJDKの既知問題だということだそうです。
Loading...
MabiIcco-v1.5.6で報告された問題ですが、runtimeは以前より17.0.10なので、MabiIccoの問題ではなくruntimeの問題ようです。
17.0.15にバージョンアップしてみたところ解決するようでした。
JDKの修正は、17.0.12に入っているようですので、このバージョン以降であれば解決します。
8305072: Win32ShellFolder2.compareTo is inconsistent · openjdk/jdk17u@17d65fe
Backport-of: 2fcb816858406f33cefef3164b2c85f9f996c7da
今のところ発生事例がごくわずかであるため、MabiIccoの正式反映は次バージョンの予定です。同エラーでお困りの場合には連絡いただけると幸いです。