Index: main/java/org/apache/harmony/unpack200/Segment.java =================================================================== --- main/java/org/apache/harmony/unpack200/Segment.java (revision 692203) +++ main/java/org/apache/harmony/unpack200/Segment.java (working copy) @@ -532,7 +532,13 @@ for (int i = 0; i < numberOfFiles; i++) { String name = fileName[i]; - long modtime = archiveModtime + fileModtime[i]; + // For Pack200 archives, modtime is in seconds + // from the epoch. JarEntries need it to be in + // milliseconds from the epoch. + // Even though we're adding two longs and multiplying + // by 1000, we won't overflow because both longs are + // always under 2^32. + long modtime = 1000 * (archiveModtime + fileModtime[i]); boolean deflate = fileDeflate[i]; JarEntry entry = new JarEntry(name);