diff options
| author | Fuwn <[email protected]> | 2026-02-12 22:33:32 -0800 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2026-02-12 22:33:32 -0800 |
| commit | c7a9d4a6bd53ed7d61731770f2f10e8b9fd435f9 (patch) | |
| tree | df9f48bf128a6c0186a8e91857d6ff30fe0e9f18 /NET/worlds/scape/WobClassLoader.java | |
| download | worldsplayer-c7a9d4a6bd53ed7d61731770f2f10e8b9fd435f9.tar.xz worldsplayer-c7a9d4a6bd53ed7d61731770f2f10e8b9fd435f9.zip | |
Initial commit
Diffstat (limited to 'NET/worlds/scape/WobClassLoader.java')
| -rw-r--r-- | NET/worlds/scape/WobClassLoader.java | 96 |
1 files changed, 96 insertions, 0 deletions
diff --git a/NET/worlds/scape/WobClassLoader.java b/NET/worlds/scape/WobClassLoader.java new file mode 100644 index 0000000..cc7b8d5 --- /dev/null +++ b/NET/worlds/scape/WobClassLoader.java @@ -0,0 +1,96 @@ +package NET.worlds.scape; + +import java.io.File; +import java.io.FileInputStream; +import java.io.InputStream; +import java.util.Hashtable; + +public class WobClassLoader extends ClassLoader { + static Hashtable loaders = new Hashtable(); + Hashtable classes = new Hashtable(); + String zipName; + + public static synchronized Class get(String zipName, String cname) { + WobClassLoader cl = (WobClassLoader)loaders.get(zipName); + if (cl == null) { + cl = new WobClassLoader(zipName); + loaders.put(zipName, cl); + } + + try { + return cl.loadClass(cname, true); + } catch (ClassNotFoundException var4) { + return null; + } + } + + public WobClassLoader(String n) { + this.zipName = n; + } + + @Override + protected synchronized Class loadClass(String cname, boolean resolve) throws ClassNotFoundException { + Class cl = (Class)this.classes.get(cname); + if (cl == null) { + try { + return this.findSystemClass(cname); + } catch (NoClassDefFoundError var7) { + } catch (ClassNotFoundException var8) { + } + + byte[] data = this.loadData(cname); + if (data != null) { + try { + cl = this.defineClass(data, 0, data.length); + } catch (ClassFormatError var6) { + throw new ClassNotFoundException(cname); + } + } + + if (cl == null || !cname.equals(cl.getName())) { + throw new ClassNotFoundException(cname); + } + + this.classes.put(cname, cl); + } + + if (resolve) { + this.resolveClass(cl); + } + + return cl; + } + + private byte[] loadData(String cname) { + byte[] data = (byte[])null; + InputStream in = null; + + byte[] var7; + try { + if (cname == null) { + return null; + } + + File file = new File(this.zipName); + int len = (int)file.length(); + in = new FileInputStream(file); + data = new byte[len]; + if (in.read(data) != len) { + return null; + } + + var7 = data; + } catch (Exception var16) { + return null; + } finally { + if (in != null) { + try { + in.close(); + } catch (Exception var15) { + } + } + } + + return var7; + } +} |