package jetbrains.buildServer.tools.util; /** * Created 15.05.13 16:18 * * @author Eugene Petrenko (eugene.petrenko@jetbrains.com) */ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.io.File; import java.io.IOException; import java.net.URL; import java.net.URLDecoder; /** * User: Eugene.Petrenko * Date: 13.02.2007 * Time: 18:28:18 */ public class ClassPathUtil { @Nullable public static File getClassFile(@NotNull final Class<?> clazz) throws IOException { String path = "/" + clazz.getName().replace('.', '/') + ".class"; final URL url = clazz.getResource(path); if (url == null) { return null; } String urlStr = URLDecoder.decode(url.toExternalForm().replace("+", "%2B"), "UTF-8"); int startIndex = urlStr.indexOf(':'); while (startIndex >= 0 && urlStr.charAt(startIndex + 1) != '/') { startIndex = urlStr.indexOf(':', startIndex + 1); } if (startIndex >= 0) { urlStr = urlStr.substring(startIndex + 1); } if (urlStr.startsWith("/") && urlStr.indexOf(":") == 2) { urlStr = urlStr.substring(1); } return new File(urlStr); } }