From 008322bec70a3a20bd00ed2219215a9f42fe0ca5 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Wed, 08 Jun 2011 20:48:07 -0400 Subject: [PATCH] Blame support finished, requires JGit 1.0.0. Checkstyle. Findbugs. --- src/com/gitblit/Launcher.java | 71 +++++++++++++++++++++++------------ 1 files changed, 46 insertions(+), 25 deletions(-) diff --git a/src/com/gitblit/Launcher.java b/src/com/gitblit/Launcher.java index a55056d..0dcb22b 100644 --- a/src/com/gitblit/Launcher.java +++ b/src/com/gitblit/Launcher.java @@ -1,3 +1,18 @@ +/* + * Copyright 2011 gitblit.com. + * + * 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. + */ package com.gitblit; import java.io.File; @@ -7,6 +22,7 @@ import java.net.URL; import java.net.URLClassLoader; import java.security.ProtectionDomain; +import java.text.MessageFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -19,16 +35,20 @@ */ public class Launcher { - public final static boolean debug = false; + public static final boolean DEBUG = false; + + /** + * Parameters of the method to add an URL to the System classes. + */ + private static final Class<?>[] PARAMETERS = new Class[] { URL.class }; public static void main(String[] args) { - if (debug) + if (DEBUG) { System.out.println("jcp=" + System.getProperty("java.class.path")); - - ProtectionDomain protectionDomain = Launcher.class.getProtectionDomain(); - final String launchJar = protectionDomain.getCodeSource().getLocation().toExternalForm(); - if (debug) - System.out.println("launcher=" + launchJar); + ProtectionDomain protectionDomain = Launcher.class.getProtectionDomain(); + System.out.println("launcher=" + + protectionDomain.getCodeSource().getLocation().toExternalForm()); + } Build.runtime(); @@ -36,16 +56,15 @@ String[] folders = new String[] { "lib", "ext" }; List<File> jars = new ArrayList<File>(); for (String folder : folders) { - if (folder == null) + if (folder == null) { continue; - File libFolder = new File(folder); - if (!libFolder.exists()) - continue; - try { - libFolder = libFolder.getCanonicalFile(); - } catch (IOException iox) { } - jars.addAll(findJars(libFolder)); + File libFolder = new File(folder); + if (!libFolder.exists()) { + continue; + } + List<File> found = findJars(libFolder.getAbsoluteFile()); + jars.addAll(found); } if (jars.size() == 0) { @@ -79,19 +98,15 @@ }); if (libs != null && libs.length > 0) { jars.addAll(Arrays.asList(libs)); - if (debug) { - for (File jar : jars) + if (DEBUG) { + for (File jar : jars) { System.out.println("found " + jar); + } } } } return jars; } - - /** - * Parameters of the method to add an URL to the System classes. - */ - private static final Class<?>[] parameters = new Class[] { URL.class }; /** * Adds a file to the classpath @@ -101,17 +116,23 @@ * @throws IOException */ public static void addJarFile(File f) throws IOException { + if (f.getName().indexOf("-sources") > -1 || f.getName().indexOf("-javadoc") > -1) { + // don't add source or javadoc jars to runtime classpath + return; + } URL u = f.toURI().toURL(); - if (debug) + if (DEBUG) { System.out.println("load=" + u.toExternalForm()); + } URLClassLoader sysloader = (URLClassLoader) ClassLoader.getSystemClassLoader(); Class<?> sysclass = URLClassLoader.class; try { - Method method = sysclass.getDeclaredMethod("addURL", parameters); + Method method = sysclass.getDeclaredMethod("addURL", PARAMETERS); method.setAccessible(true); method.invoke(sysloader, new Object[] { u }); } catch (Throwable t) { - throw new IOException("Error, could not add " + f.getPath() + " to system classloader", t); + throw new IOException(MessageFormat.format( + "Error, could not add {0} to system classloader", f.getPath()), t); } } } -- Gitblit v1.9.1