@@ -719,73 +719,37 @@ private static void parseArgs() {
719719 }
720720
721721 private static void processClasspaths (String libs ) {
722- // Try to find JAR via Loader.class (unmasked bootstrap class)
723- // Main.class won't work because it's loaded from .classdata
724- String bootPath = null ;
725- try {
726- Class <?> loaderClass = Class .forName ("org.openjdk.btrace.boot.Loader" );
727- URL loaderResource = loaderClass .getResource ("Loader.class" );
728- if (loaderResource != null ) {
729- bootPath = loaderResource .toString ();
730- if (bootPath .startsWith ("jar:file:" )) {
731- // Extract JAR path from jar:file:/path/to/btrace.jar!/org/openjdk/btrace/boot/Loader.class
732- bootPath = bootPath .substring ("jar:file:" .length ());
733- int idx = bootPath .indexOf ("!" );
734- if (idx > -1 ) {
735- bootPath = bootPath .substring (0 , idx );
736- }
737- }
738- }
739- } catch (ClassNotFoundException e ) {
740- // Fall back to Main.class if Loader not found (shouldn't happen)
741- URL agentJar = Main .class .getResource ("Main.class" );
742- if (agentJar != null ) {
743- bootPath = agentJar .toString ().replace ("jar:file:" , "" );
744- int idx = bootPath .indexOf ("btrace-agent.jar" );
745- if (idx > -1 ) {
746- bootPath = bootPath .substring (0 , idx ) + "btrace-boot.jar" ;
747- }
748- }
749- }
750-
751722 String bootClassPath = argMap .get (BOOT_CLASS_PATH );
752- if (bootClassPath == null && bootPath != null ) {
753- bootClassPath = bootPath ;
754- } else if (bootClassPath != null && bootPath != null ) {
755- if ("." .equals (bootClassPath )) {
756- bootClassPath = bootPath ;
757- } else {
758- bootClassPath = bootPath + File .pathSeparator + bootClassPath ;
759- }
760- }
761- log .debug ("Bootstrap ClassPath: {}" , bootClassPath );
762723
763- StringTokenizer tokenizer = new StringTokenizer (bootClassPath , File .pathSeparator );
764- try {
765- while (tokenizer .hasMoreTokens ()) {
766- String path = tokenizer .nextToken ();
767- File f = new File (path );
768- if (!f .exists ()) {
769- log .debug ("BTrace bootstrap classpath resource [{}] does not exist" , path );
770- } else {
771- if (f .isFile () && f .getName ().toLowerCase ().endsWith (".jar" )) {
772- JarFile jf = asJarFile (f );
773- log .debug ("Adding jar: {}" , jf );
774- inst .appendToBootstrapClassLoaderSearch (jf );
724+ if (bootClassPath != null ) {
725+ log .debug ("Bootstrap ClassPath: {}" , bootClassPath );
726+ StringTokenizer tokenizer = new StringTokenizer (bootClassPath , File .pathSeparator );
727+ try {
728+ while (tokenizer .hasMoreTokens ()) {
729+ String path = tokenizer .nextToken ();
730+ File f = new File (path );
731+ if (!f .exists ()) {
732+ log .warn ("BTrace bootstrap classpath resource [{}] does not exist" , path );
775733 } else {
776- log .debug ("ignoring boot classpath element '{}' - only jar files allowed" , path );
734+ if (f .isFile () && f .getName ().toLowerCase ().endsWith (".jar" )) {
735+ JarFile jf = asJarFile (f );
736+ log .debug ("Adding jar: {}" , jf );
737+ inst .appendToBootstrapClassLoaderSearch (jf );
738+ } else {
739+ log .debug ("ignoring boot classpath element '{}' - only jar files allowed" , path );
740+ }
777741 }
778742 }
743+ } catch (IOException ex ) {
744+ log .debug ("adding to boot classpath failed!" , ex );
745+ return ;
779746 }
780- } catch (IOException ex ) {
781- log .debug ("adding to boot classpath failed!" , ex );
782- return ;
783747 }
784748
785749 String systemClassPath = argMap .get (SYSTEM_CLASS_PATH );
786750 if (systemClassPath != null ) {
787751 log .debug ("System ClassPath: {}" , systemClassPath );
788- tokenizer = new StringTokenizer (systemClassPath , File .pathSeparator );
752+ StringTokenizer tokenizer = new StringTokenizer (systemClassPath , File .pathSeparator );
789753 try {
790754 while (tokenizer .hasMoreTokens ()) {
791755 String path = tokenizer .nextToken ();
0 commit comments