String path = libZip.toURI().getPath();
String outDir = Locations.getParent(libZip).toURI().getPath();
TarArchiveInputStream archiveInputStream = new TarArchiveInputStream(
new GZIPInputStream(new FileInputStream(path)));
try {
TarArchiveEntry entry = archiveInputStream.getNextTarEntry();
while (entry != null) {
File destFile = new File(outDir, entry.getName());
destFile.getParentFile().mkdirs();
if (!entry.isDirectory()) {
ByteStreams.copy(archiveInputStream, Files.newOutputStreamSupplier(destFile));
//TODO: Set executable permission based on entry.getMode()
destFile.setExecutable(true, false);
}
entry = archiveInputStream.getNextTarEntry();