X-Git-Url: http://www2.svjatoslav.eu/gitweb/?p=javainspect.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Finspector%2Fjava%2Fcommandline%2FMain.java;fp=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Finspector%2Fjava%2Fcommandline%2FMain.java;h=0c63a551c7d86c96c5f2aa2e137cd3fd7440a7ec;hp=d4d144ae3eb4e8320f29d47e35f314a09c3ab063;hb=6df8ead7c2fdfe12e2b71d25edcab0abf4b93c89;hpb=250ce45d956b8c1c9b9247b1e248aab580190451 diff --git a/src/main/java/eu/svjatoslav/inspector/java/commandline/Main.java b/src/main/java/eu/svjatoslav/inspector/java/commandline/Main.java index d4d144a..0c63a55 100644 --- a/src/main/java/eu/svjatoslav/inspector/java/commandline/Main.java +++ b/src/main/java/eu/svjatoslav/inspector/java/commandline/Main.java @@ -19,9 +19,13 @@ import java.util.jar.JarInputStream; public class Main { public static void main(String[] args) throws IOException, ClassNotFoundException { CommandlineConfiguration configuration = new CommandlineConfiguration(args); - if (!configuration.configurationOk) + if (!configuration.configurationOk) { + configuration.parser.showHelp(); System.exit(1); - + } + + if (configuration.showHelp.isSpecified()) configuration.parser.showHelp(); + getClassGraph(configuration).generateGraph(configuration.graphName.getValue()); if (configuration.isDebug()) @@ -32,7 +36,7 @@ public class Main { List jarFiles = configuration.jarFiles.getValue(); URLClassLoader classLoader = new URLClassLoader( - getFileUrls(jarFiles), + getClasspathUrls(jarFiles, configuration.classPaths.getValue()), configuration.getClass().getClassLoader()); ClassGraph classGraph = new ClassGraph(); @@ -45,7 +49,7 @@ public class Main { classGraph.setKeepDotFile(configuration.keepDotFile.getValue()); - if (configuration.rootClasses.isSpecified()){ + if (configuration.rootClasses.isSpecified()) { // add only selected root classes for (String rootClass : configuration.rootClasses.getValue()) attemptClassAdditionByName(classLoader, classGraph, configuration, rootClass); @@ -64,8 +68,17 @@ public class Main { return classGraph; } - private static URL[] getFileUrls(List jarFiles) { + private static URL[] getClasspathUrls(List jarFiles, List classpathDirectories) { List urls = new ArrayList<>(); + + classpathDirectories.forEach(classpathDirectory -> { + try { + urls.add(classpathDirectory.toURI().toURL()); + } catch (MalformedURLException e) { + throw new RuntimeException(e); + } + }); + jarFiles.forEach((File file) -> { try { urls.add(file.toURI().toURL()); @@ -90,7 +103,7 @@ public class Main { System.out.println("Adding class to graph: " + className); try { classGraph.add(loadClassByName(classLoader, className)); - } catch (NoClassDefFoundError e){ + } catch (NoClassDefFoundError e) { if (configuration.isDebug()) System.out.println("Class definition was not found."); // Sometimes referenced classes are not found in the same Jar.