hg: jdk8/tl/langtools: 7177701: error: Filling jar message during javax/imageio/metadata/IIOMetadataFormatImpl compilation
Joe Darcy
joe.darcy at oracle.com
Wed Jun 20 01:28:40 UTC 2012
Hi David,
On 6/19/2012 6:14 PM, David Holmes wrote:
> Hi Maurizio,
>
> On 19/06/2012 10:27 PM, maurizio.cimadamore at oracle.com wrote:
>> Changeset: 34e254ffd0e7
>> Author: mcimadamore
>> Date: 2012-06-19 13:25 +0100
>> URL: http://hg.openjdk.java.net/jdk8/tl/langtools/rev/34e254ffd0e7
>>
>> 7177701: error: Filling jar message during
>> javax/imageio/metadata/IIOMetadataFormatImpl compilation
>> Summary: Recent JDK hash changes affected order in which files are
>> returned from JavacFileManager.list()
>> Reviewed-by: jjg
>>
>> ! src/share/classes/com/sun/tools/javac/file/ZipFileIndex.java
>
> That change seems fragile to say the least. Somewhere some piece of
> code depends on the iteration order of the collection. The recent
> changes meant that HashSet's returned order changed and broke things.
> So you change to a LinkedHashSet which somehow restores the old order
> (or at least reorders it yet again but in a way that doesn't cause a
> problem).
>
> David
LinkedHashSet is specified to preserve insertion order in iteration:
"This implementation [of LinkedHashSet] differs from HashSet in that it
maintains a doubly-linked list running through all of its entries. This
linked list defines the iteration ordering, which is the order in which
elements were inserted into the set (insertion-order)."
Therefore, LinkedHashSet is just the right class to use when predictable
iteration order matters :-)
-Joe
More information about the core-libs-dev
mailing list