Here you can find the source of executeWithClassLoader(ClassLoader classLoader, Callable
Parameter | Description |
---|---|
classLoader | the class loader to set for the duration of the call |
callable | the callable to execute within the context of the provided class loader |
Parameter | Description |
---|---|
Exception | whatever callable throws |
public static <T> T executeWithClassLoader(ClassLoader classLoader, Callable<T> callable) throws Exception
//package com.java2s; /*//from w w w. j a va 2s .c o m * Copyright 2010-2010 LinkedIn, Inc * * 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.util.concurrent.Callable; public class Main { /** * Execute the call within the given class loader... handle setting / reverting to * previous class loader in a safe manner. * * @param classLoader the class loader to set for the duration of the call * @param callable the callable to execute within the context of the provided class loader * @return the result of the call * @throws Exception whatever callable throws */ public static <T> T executeWithClassLoader(ClassLoader classLoader, Callable<T> callable) throws Exception { ClassLoader previousClassLoader = Thread.currentThread().getContextClassLoader(); try { Thread.currentThread().setContextClassLoader(classLoader); return callable.call(); } finally { Thread.currentThread().setContextClassLoader(previousClassLoader); } } }