
com.groupbyinc.flux.bootstrap.JarHell.class Maven / Gradle / Ivy
???? 3? %com/groupbyinc/flux/bootstrap/JarHell java/lang/Object JarHell.java 'com/groupbyinc/flux/bootstrap/JarHell$1 ()V
this 'Lcom/groupbyinc/flux/bootstrap/JarHell; main ([Ljava/lang/String;)V java/lang/Exception .Lcom/groupbyinc/flux/common/SuppressForbidden; reason command line tool java/lang/System out Ljava/io/PrintStream; checking for jar hell... java/io/PrintStream println (Ljava/lang/String;)V
! checkJarHell #
$ no jar hell found & args [Ljava/lang/String; java/lang/Class * getClassLoader ()Ljava/lang/ClassLoader; , -
+ . *com/groupbyinc/flux/common/logging/Loggers 0 getLogger @(Ljava/lang/Class;)Lcom/groupbyinc/flux/common/logging/ESLogger; 2 3
1 4 +com/groupbyinc/flux/common/logging/ESLogger 6 isDebugEnabled ()Z 8 9 7 : java.class.path: {} < java.class.path > getProperty &(Ljava/lang/String;)Ljava/lang/String; @ A
B debug ((Ljava/lang/String;[Ljava/lang/Object;)V D E 7 F sun.boot.class.path: {} H sun.boot.class.path J java/net/URLClassLoader L classloader urls: {} N getURLs ()[Ljava/net/URL; P Q
M R java/util/Arrays T toString '([Ljava/lang/Object;)Ljava/lang/String; V W
U X java/lang/ClassLoader Z parseClassPath \ Q
] ([Ljava/net/URL;)V # _
` loader Ljava/lang/ClassLoader; logger -Lcom/groupbyinc/flux/common/logging/ESLogger; #(Ljava/lang/String;)[Ljava/net/URL; \ f
g 8resolves against CWD because that is how classpaths work java/net/MalformedURLException j path.separator l file.separator n java/lang/String p split '(Ljava/lang/String;)[Ljava/lang/String; r s
q t java/net/URL v ) [Ljava/net/URL; y isEmpty { 9
q | java/lang/IllegalStateException ~ java/lang/StringBuilder ?
?
iClasspath should not contain empty elements! (outdated shell script from a previous version?) classpath=' ? append -(Ljava/lang/String;)Ljava/lang/StringBuilder; ? ?
? ? ' ? ()Ljava/lang/String; V ?
? ?
? / ?
startsWith (Ljava/lang/String;)Z ? ?
q ? \ ? equals (Ljava/lang/Object;)Z ? ?
q ? replace D(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String; ? ?
q ? length ()I ? ?
q ? charAt (I)C ? ?
q ? substring (I)Ljava/lang/String; ? ?
q ? 'com/groupbyinc/flux/common/io/PathUtils ? get ;(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path; ? ?
? ? java/nio/file/Path ? toUri ()Ljava/net/URI; ? ? ? ? java/net/URI ? toURL ()Ljava/net/URL; ? ?
? ? java/lang/RuntimeException ? (Ljava/lang/Throwable;)V ?
? ? e Ljava/net/MalformedURLException; element Ljava/lang/String; i I classPath
pathSeparator
fileSeparator elements urlElements -needs JarFile for speed, just reading entries java/lang/Throwable ? java.home ?
java.home: {} ? java/util/HashMap ? ? (I)V ?
? ? java/util/HashSet ?
?
java/util/Map ?
java/util/Set ? toURI ? ?
w ? $(Ljava/net/URI;)Ljava/nio/file/Path; ? ?
? ? ? ? excluding system resource: {} ? ? ? .jar ? endsWith ? ?
q ? add ? ? ? ? )excluding duplicate classpath element: {} ? examining jar: {} ? java/util/jar/JarFile ?
? ? getManifest ()Ljava/util/jar/Manifest; ? ?
? ?
checkManifest /(Ljava/util/jar/Manifest;Ljava/nio/file/Path;)V ?
java/util/jar/Manifest entries ()Ljava/util/Enumeration;
? java/util/Enumeration hasMoreElements 9
nextElement ()Ljava/lang/Object;
java/util/jar/JarEntry getName ?
.class (CC)Ljava/lang/String; ?
q (II)Ljava/lang/String; ?
q
checkClass 8(Ljava/util/Map;Ljava/lang/String;Ljava/nio/file/Path;)V
! close#
?$
addSuppressed&