package eu.svjatoslav.inspector.java.commandline;
-import eu.svjatoslav.inspector.java.commandline.CommandlineConfiguration;
import eu.svjatoslav.inspector.java.structure.ClassGraph;
import java.io.File;
import java.util.jar.JarEntry;
import java.util.jar.JarInputStream;
-import static java.io.File.separator;
-import static java.lang.System.getProperty;
-
/**
* This class acts as a commandline interface for JavaInspect.
*/
ClassGraph classGraph = new ClassGraph();
- classGraph.setTargetDirectory(getTargetDirectory(configuration));
+ if (configuration.targetDirectory.isSpecified())
+ classGraph.setTargetDirectory(configuration.targetDirectory.getValue());
if (configuration.targetImageType.isSpecified())
classGraph.setTargetImageType(configuration.targetImageType.getValue());
return classGraph;
}
- private static File getTargetDirectory(CommandlineConfiguration configuration) {
- if (configuration.targetDirectory.isSpecified())
- return configuration.targetDirectory.getValue();
-
- // default to current directory
- return new File(getProperty("user.dir") + separator);
- }
-
private static URL[] getFileUrls(List<File> jarFiles) {
List<URL> urls = new ArrayList<>();
jarFiles.forEach((File file) -> {
for (String className : getClassNamesFromJar(jarFile)) {
if (configuration.isDebug())
System.out.println("Adding class to graph: " + className);
-
- classGraph.add(loadClassByName(classLoader, className));
+ try {
+ classGraph.add(loadClassByName(classLoader, className));
+ } catch (NoClassDefFoundError e){
+ if (configuration.isDebug())
+ System.out.println("Class definition was not found.");
+ // Sometimes referenced classes are not found in the same Jar.
+ // Let's ignore this and proceed with the classes that we have.
+ }
}
}