protected Proto searchFromAll(String path, Proto importer) throws Exception
    {
        if (path.startsWith("http://"))
        {
            URL url = new URL(path);
            return loadFrom(url, importer);
        }

        File protoFile, importerFile = importer.getFile();
        if (importerFile == null)
            protoFile = new File(path);
        else
        {
            // check if its relative to its importer's dir.
            protoFile = new File(importerFile.getAbsoluteFile().getParentFile(), path);
            if (!protoFile.exists() && !(protoFile = new File(path)).exists())
            {
                // check if its relative to its importer's package base dir.
                File baseDir = getBaseDirFromPackagePath(path, importer);
                if (baseDir != null)
                    protoFile = new File(baseDir, path);
            }

            if (!protoFile.exists() && !__protoLoadDirs.isEmpty())
            {
                // check from the "proto_path" provided as a system property
                for (File dir : __protoLoadDirs)
                {
                    if ((protoFile = new File(dir, path)).exists())
                    {
                        // found
                        break;
                    }
                }
            }
        }

        if (protoFile.exists())
            return loadFrom(protoFile, importer);

        // last resort (defaults to classpath lookup).
        Proto protoFromOtherResource = loadFromOtherResource(path, importer);
        if (protoFromOtherResource == null)
        {
            throw new IllegalStateException("Imported proto " + path +
                    " not found. (" + importer.getSourcePath() + ")");
        }

        return protoFromOtherResource;
    }
Search from every possible resource. Also loads from a remote url (if path starts with http://).
<p>

<pre>
Search order is:
1. relative path
2. proto_path
3. classpath
</pre>
protostuff-parser/src/main/java/io/protostuff/parser/DefaultProtoLoader.java