   # we don't actually load from this file, but it has to look like a valid filename
   'sun.boot.class.path': '/System/Library/Frameworks/JavaVM.framework/Classes/classes.jar',
   # this doesn't actually exist in our classes.jar, but no other GraphicsEnvironment does either
-  'java.awt.graphicsenv': 'sun.awt.X11GraphicsEnvironment'
+  'java.awt.graphicsenv': 'sun.awt.X11GraphicsEnvironment',
+  'useJavaUtilZip': 'true'  # hack for sun6javac, avoid ZipFileIndex shenanigans
 }
 
 get_field_from_offset = (rs, cls, offset) ->

                # yep, hardcoded. though I'm not sure a correct value actually matters...
                return 21090
              zipfile = rs.get_zip_descriptor jzfile
              unless zipfile.size?
                entries = []
                add_entries = (dir) ->
                  curr_dir_entries = fs.readdirSync dir
                  for e in curr_dir_entries
                    fullpath = "#{dir}/#{e}"
                    stat = fs.statSync fullpath
                    if stat.isDirectory()
                      add_entries fullpath
                    else
                      entries.push e
                add_entries zipfile.path
                zipfile.size = entries.length
              zipfile.size
          o 'getEntry(JLjava/lang/String;Z)J', (rs, jzfile, name, add_slash) ->
              zf = rs.get_zip_descriptor jzfile
              entry_name = rs.jvm2js_str name

          o 'getMethod(J)I', (rs, jzentry) -> 0 # STORED (i.e. uncompressed)
          o 'read(JJJ[BII)I', (rs, jzfile, jzentry, pos, byte_arr, offset, len) ->
              ze = rs.get_zip_descriptor jzentry
              file = ze.file ? fs.openSync ze.fullpath, 'r'
              if node?
                pos_int = pos.toInt()
                bytes_read = Math.min(file.length - pos_int, len)
                byte_arr.array[offset+i] = file[pos_int+i] for i in [0...bytes_read] by 1
              else
                buf = new Buffer len
                bytes_read = fs.readSync(file, buf, 0, len, pos.toInt())
                byte_arr.array[offset+i] = buf.readUInt8(i) for i in [0...bytes_read] by 1
              return if bytes_read == 0 and len isnt 0 then -1 else bytes_read
        ]
