defineClass(name, buf, 0, buf.length); classes.add(name);
try{ defineClass(name, buf, 0, buf.length); classes.add(name); } catch(LinkageError lE){  }
    private void loadClassBytesFromJar(File jar) throws Exception {        if (!jar.isFile()) {            return;        }        JarFile jf = new JarFile(jar);        String entryName;        Vector classes = new Vector();        for (Enumeration e = jf.entries(); e.hasMoreElements(); ) {            ZipEntry entry = (ZipEntry) e.nextElement();            entryName = entry.getName();            if (entryName.indexOf(".class") == -1 && !entryName.equals("plugin_properties.xml")                && entryName.indexOf("icon.gif") == -1 && entryName.indexOf("language_xml_") == -1) {                continue;            }            InputStream is = jf.getInputStream(entry);            int l = (int) entry.getSize();            byte[] buf = new byte[l];            int read = 0;            while (read < l) {                int incr = is.read(buf, read, l - read);                read += incr;            }            if (entryName.equals("plugin_properties.xml")){                String xmlString = new String(buf, 0, buf.length);                pluginsPropertiesXMLHolder = new XMLValueHolder(xmlString);            }            else if (entryName.indexOf("icon.gif") != -1){                pluginIcon = new ImageIcon(buf);            }            else if (entryName.indexOf("language_xml_") != -1){                String xmlString = new String(buf, 0, buf.length);                XMLValueHolder languageFile = new XMLValueHolder(xmlString);                String sprache = languageFile.getXMLAttributeByTagName(".root.language.value");                languageXMLs.put(sprache, languageFile);            }            else{                String name = entryName.replace('/', '.');                name = name.replaceAll(".class", "");                defineClass(name, buf, 0, buf.length);                classes.add(name);            }        }    }