public static ArrayList loadClasses(final File jarFile) throws IOException { ArrayList classes = new ArrayList(); ZipInputStream jis = new ZipInputStream(new FileInputStream(jarFile)); ZipEntry entry; while ((entry = jis.getNextEntry()) != null) { try { final String name = entry.getName(); if (name.endsWith(".class")) { byte[] bytes = getBytes(jis); String cafebabe = String.format("%02X%02X%02X%02X", bytes[0], bytes[1], bytes[2], bytes[3]); if(cafebabe.toLowerCase().equals("cafebabe")) { try { final ClassNode cn = getNode(bytes); classes.add(cn); } catch(Exception e) { e.printStackTrace(); } } else { System.out.println(jarFile+">"+name+": Header does not start with CAFEBABE, ignoring."); } } } catch(Exception e) { } finally { jis.closeEntry(); } } jis.close(); return classes; }