Java Class Loader getToolsClassLoader()

Here you can find the source of getToolsClassLoader()

Description

get Tools Class Loader

License

Apache License

Declaration

public static ClassLoader getToolsClassLoader() 

Method Source Code


//package com.java2s;
/*/*w w w  .ja v  a 2  s .c  o m*/
 * Copyright 2012-2014 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import java.io.File;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;

public class Main {
    /**
     * Various search locations for tools, including the odd Java 6 OSX jar.
     */
    private static final String[] TOOLS_LOCATIONS = { "lib/tools.jar", "../lib/tools.jar",
            "../Classes/classes.jar" };

    public static ClassLoader getToolsClassLoader() {
        ClassLoader systemClassLoader = ClassLoader.getSystemClassLoader();
        return new URLClassLoader(new URL[] { getToolsJarUrl() }, systemClassLoader);
    }

    public static URL getToolsJarUrl() {
        String javaHome = getJavaHome();
        for (String location : TOOLS_LOCATIONS) {
            try {
                URL url = new URL(javaHome + "/" + location);
                if (new File(url.toURI()).exists()) {
                    return url;
                }
            } catch (Exception ex) {
                // Ignore and try the next location
            }
        }
        throw new IllegalStateException("Unable to locate tools.jar");
    }

    private static String getJavaHome() {
        try {
            return new File(System.getProperty("java.home")).toURI().toURL().toExternalForm();
        } catch (MalformedURLException e) {
            throw new IllegalStateException("Cannot locate java.home", e);
        }
    }
}

Related

  1. getPackageFolder(String packageName, ClassLoader classLoader)
  2. getParentClassLoader()
  3. getProjectClassLoader(IJavaProject javaProject)
  4. getProjectClassLoader(IJavaProject javaProject, ClassLoader parentClassLoader)
  5. getStreamForPath(ClassLoader loader, String path)
  6. isBizServicesLocatorXmlLoaded(File f, ClassLoader classLoader)
  7. load(Class serviceClass, ClassLoader loader)
  8. load(String className)
  9. load(String path, String className)