public static boolean unzipJar(final File destination, final File jarFile, final List<String> exclude)
	{
		try
		{
			if(!isZipValid(jarFile))
			{
				return false;
			}
			final JarFile jar = new JarFile(jarFile);
			for(final Enumeration<JarEntry> enums = jar.entries(); enums.hasMoreElements();)
			{
				final JarEntry entry = (JarEntry) enums.nextElement();
				final String fileName = entry.getName();
				final File file = new File(destination, fileName);
				if(!listContains(exclude, fileName) && !file.exists())
				{
					if(fileName.endsWith("/"))
					{
						file.mkdirs();
					}
					else
					{
						final InputStream input = jar.getInputStream(entry);
						final FileOutputStream output = new FileOutputStream(file);
						while(input.available() > 0)
						{
							output.write(input.read());
						}
						output.close();
						input.close();
					}
				}
			}
			jar.close();
			return true;
		}
		catch(final Exception ex)
		{
			ex.printStackTrace();
		}
		return false;
	}