⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 syspathjavaloader.java

📁 无线通信的主要编程软件,是无线通信工作人员的必备工具,关天相关教程我会在后续传上.
💻 JAVA
字号:
// Copyright (c) Corporation for National Research Initiatives// Copyright 2000 Samuele Pedronipackage org.python.core;import java.io.*;import java.util.StringTokenizer;import java.util.Hashtable;import java.util.zip.*;public class SyspathJavaLoader extends ClassLoader{    public InputStream getResourceAsStream(String res) {        ClassLoader classLoader = Py.getSystemState().getClassLoader();        if (classLoader != null) return classLoader.getResourceAsStream(res);        classLoader = this.getClass().getClassLoader();        InputStream ret;        if (classLoader != null) ret = classLoader.getResourceAsStream(res);        else ret = ClassLoader.getSystemResourceAsStream(res);        if (ret != null) return ret;        if(res.charAt(0) == '/') res = res.substring(1);        res.replace('/',File.separatorChar);        PyList path = Py.getSystemState().path;        for (int i=0; i < path.__len__(); i++) {            PyObject entry = path.__getitem__(i);            if (entry instanceof SyspathArchive) {                SyspathArchive archive = (SyspathArchive) entry;                ZipEntry ze = archive.getEntry(res);                if (ze != null) {                    try {                        return archive.getInputStream(ze);                    } catch (IOException e) { ; }                }                continue;            }            String dir = entry.__str__().toString();            if (dir.length() == 0) dir = null;            try {                return new BufferedInputStream(                       new FileInputStream(new File(dir,res)));            }            catch (IOException e) {                continue;            }        }        return null;    }    // override from abstract base class    protected Class loadClass(String name, boolean resolve)        throws ClassNotFoundException    {//         System.err.println("loadClass("+name+", "+resolve+")");        // First, if the Python runtime system has a default class loader,        // defer to it.        ClassLoader classLoader = Py.getSystemState().getClassLoader();        if (classLoader != null)            return classLoader.loadClass(name);        // Search the sys.path for a .class file matching the named class.        // TBD: This registry option is temporary.        try {          return Class.forName(name);        }        catch(ClassNotFoundException e) {        }        Class c = findLoadedClass(name);        if (c != null)         return c;        /* previously: if            Options.extendedClassLoader &&            // KLUDGE ALERT: without this test, running jpython            // interactively from the build directory will fail with            // ClassCircularityError or LinkageError.  There's gotta be a            // better way.            !name.startsWith("org.python")        */        {            PyList path = Py.getSystemState().path;            for (int i=0; i < path.__len__(); i++) {                InputStream fis = null;                PyObject entry = path.__getitem__(i);                if (entry instanceof SyspathArchive) {                    SyspathArchive archive = (SyspathArchive) entry;                    String entryname = name.replace('.', File.separatorChar) +                                            ".class";                    ZipEntry ze = archive.getEntry(entryname);                    if (ze != null) {                        try {                            fis = archive.getInputStream(ze);                        } catch (IOException exc) { ; }                    }                } else {                    String dir = entry.__str__().toString();                    fis = open(dir, name);                }                if (fis == null) {                    continue;                }                try {		    byte[] buffer = FileUtil.readBytes( fis );                    fis.close();                    return loadClassFromBytes(name, buffer);                }                catch (IOException e) {                    continue;                }            }        }        // couldn't find the .class file on sys.path        throw new ClassNotFoundException(name);    }    private FileInputStream open(String dir, String name) {        String accum = "";        boolean first = true;        for (StringTokenizer t = new StringTokenizer(name, ".");             t.hasMoreTokens();)        {            String token = t.nextToken();            if (!first)                accum += File.separator;            accum += token;            first = false;        }        try {            if (dir.length() == 0)                dir = null;            return new FileInputStream(new File(dir, accum+".class"));        }        catch (FileNotFoundException e) {            return null;        }    }    private Class loadClassFromBytes(String name, byte[] data) {//         System.err.println("loadClassFromBytes("+name+", byte[])");        Class c = defineClass(name, data, 0, data.length);        resolveClass(c);        // This method has caused much trouble.  Using it breaks jdk1.2rc1        // Not using it can make SUN's jdk1.1.6 JIT slightly unhappy.        // Don't use by default, but allow python.options.compileClass to        // override        if (!Options.skipCompile) {//             System.err.println("compile: "+name);            Compiler.compileClass(c);        }        return c;    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -